Recorrer subformulario para comparar los valores de una columna

Necesito un poco de ayuda ya que no encuentro la forma de hacerlo.

Tengo un formulario principal (Form1) y dentro de él dos subformularios (subForm1 y subForm2) en vista de datos, ambos con el mismo numero de campos, mismo tipo de datos . Del subForm1 selecciono una fila (la que me haga falta) y me llevo mediante un boton en el Form1 todos los datos de dicha fila al subform2, si necesito pasar más datos al subFomr2 vuelvo a realizar la misma operación, pero quería que si los datos de un solo campo en concreto se repite con los datos ya contenidos en el subform2 me de por ejemplo un mensaje en el que me indique que ese valor está repetido y el usuario pueda tener la opción de grabarlo o no en este subformulario 2. Es decir lo que necesito es recorrer solo una columna del formulario 2 y compararlo con el valor que quiero llevar del subformulario 1, pero no se como hacerlo.

1 respuesta

Respuesta
2

Vamos a suponer que tienes el subformulario Clientes dependiente de la tabla o consulta Clientes con un cuadro de texto NombreCliente y que tienes otro subformulario Amigos, dependiente de la tabla o consulta Amigos con un cuadro de texto NombreAmigo. En el código de ese botón puedes poner

If dcount("*","amigos","nobreamigo='" & me.nombrecliente & "')>=1 then

Dim respuesta as byte

respuesta=msgbox("Ese cliente ya existe, ¿pese a eso quiere grabarlo?",vbokcancel,"Que lo sepas")

If respuesta=vbok then

docmd.runsql"insert into.....

else

exit sub

end if 

end if

Hola y gracias de antemano. Me da error en la primera línea. El error es "se esperaba separador de lista o ).

Puedes especificarme que es "amigos", ¿hace referencia a la tabla o consulta?, ¿O hace referencia al subformulario?

La instrucción es independiente del formulario. Mira, si tengo una tabla Clientes como en la imagen

Luego voy a usar el nombre señalado con la flecha, y tengo una tabla Amigos

Puedes ver que los campos no se llaman igual. Con esta última hago un formulario y en el campo Empresa voy a poner el nombre. Si lo escribo y pulso Enter

Si pulso Aceptar, el cursor pasa al campo Director para que siga poniendo datos que se grabarán en la tabla Amigos.

Por el contrario, si pulso Cancelar, es decir, que no quiero grabarlo, el cursor se vuelve al control Empresa, para que se modifique el nombre.

Lo he puesto así, porque no tengo claro que debe hacer si se le dice que no se quiere guardar. El código es

Hola de nuevo. Sí lo entiendo lo he probado y realizado con dos tablas y un formulario y en el evento antes de actualizar, pero no soy capaz de hacerlo en un formulario con dos subformularios, A ver si puedes ayudarme un poco, si logro explicarme claro

Tengo un Formulario principal con dos subformularios y un botón para pasar las líneas del subformulario 1 al subformulario 2.

Selecciono la fila que quiero pasar al sub 2, le doy click al botón y le paso la línea.

El sub dos contiene ya una línea, ahora selecciono en el sub 1 otra línea, supongamos que la misma, esta vez no debería pasarla (es lo que pretendo) porque ya está, lo que quiero es comparar un solo campo en concreto, al dar click al botón me debería dar el mensaje de que esa línea ya está.

Cual sería la sentencia.

El nombre de la tabla 1 es tbl_FabricacionDetalles (cuyo formulario es sub1), y el campo que quiero comparar es color que está tanto en sub 1 como en sub 2 (el origen de datos del sub2 es tbl_FabricacionLineas). Utilizo el evento del botón al darle click, y tengo la siguiente línea:

If DCount("*", "tbl_FabricacionDetalles", "color='" & Me.Color & "'") >= 1 Then...

Pero ni siquiera entra en el If, creo que el error está en la sintaxis, porque se trata de subformularios, pero no sé como nombrarlos.

Espero haberme explicado un poco más.

Gracias

Vamos a ver. Si tengo el formulario Ventas con dos subformularios Clientes y Amigos

Como puedes ver el cliente Yo que sé está en la tabla Amigos. Si pulso el botón pasar(flecha) me aparece

Si pulso Sí me queda

Como puedes ver ha "copiado" en la tabla Amigos los valores. Si le digo que no, no hace nada. Por el contrario, si el cliente no estuviera en la tabla y pulsaras el botón te pasaría los datos

El código es

¡Gracias! Ya lo he pillado.

Una ultima cosita, con Dcount como puedo detectar un campo vacío

Supongamos que en la tabla Clientes quieres saber si hay algún cliente en que pais sea nulo. Puedes poner

If dcount("*","clientes","pais is null")>=1 then

msgbox"Hay al menos un registro sin pais"

end if

Si lo que quisieras es saber cuantos hay sin pais

dim i as integer

i=dcount("*","clientes","pais is null")

Msgbox"¡Es que no te das cuen que hay "& i &" registros sin pais"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas