Access - Condición de existencia

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Condición de existencia

Publicado por TinoS (76 intervenciones) el 04/11/2012 23:19:37
Buenas noches.

Quisiera saber, si hay posibilidad, cómo puedo condicionar en una misma tabla lo siguiente:

En una tabla tengo dos campos númericos que siempre deben estar rellenos, pero uno de ellos, por ejemplo el Campo B, tiene que cumplir la condición de que su valor ya debe estar incluido en el Campo A, independientemente del registro en el que sea, es decir, que lo que se pretende es que el valor que lleve el campo B en un determinado registro, debe existir ya en el campo A en cualquier registro.

Por ejemplo:

Campo A ..... Campo B
------------- ..... ------------
000 ------------- 000 <---- este número sí valdría porque sí está en el Campo A.
120 ------------- 000 <---- este número sí valdría porque sí está en el Campo A.
230 ------------- 000 <---- este número sí valdría porque sí está en el Campo A.
458 ------------- 120 <---- este número sí valdría porque sí está en el Campo A.
689 ------------- 230 <---- este número sí valdría porque sí está en el Campo A.
871 ------------- 666 <---- este número no valdría porque no está en el Campo A.

Espero haberme explicado.

Gracias.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Condición de existencia

Publicado por Neckkito (1157 intervenciones) el 05/11/2012 10:55:16
Hola!
Operando a través de formulario puedes hacer lo siguiente:

1.- Sacas el evento "Después de actualizar" del campo [CampoB] (Propiedades -> Pestaña Eventos)
2.- En ese evento generas el siguiente código:

...
Private Sub...
'Declaramos las variables
Dim vCampoB as Variant
Dim vCampoAT as Variant
'Si no hay valor en [CampoB] no hacemos nada
If isnull(me.CampoB.value) then exit sub
'Cogemos el valor del campoB
vCampoB=me.CampoB.value
'Buscamos coincidencias en los registros
vCampoAT=dlookup("CampoA","NombreTabla","CampoA=" & vCampoB)
'Si no hubiera coincidencias avisamos, borramos el valor introducido y salimos
If isnull(vCampoAT) then
msgbox "El valor introducido no es válido",vbExclamation,"AVISO"
me.CampoB.Value=Null
Exit Sub
End if
End sub
...

Ten en cuenta que he supuesto que el valor introducido es de tipo numérico. Si fuera texto se debería realizar una pequeña modificación en el código, así:

vCampoAT=dlookup("CampoA","NombreTabla","CampoA='" & vCampoB & "'")

A ver si así te funciona como quieres.

Un saludo,

http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Condición de existencia

Publicado por Marcelo (166 intervenciones) el 05/11/2012 17:55:59
Haces 2 Cosultas: Consulta1 sólo con el CampoA, Consulta2 sólo con el CampoB, genera esta expresión en vista SQL en una 3ra consulta: Consulta3 y después lo llevas vista diseño, la dirección de la flecha de relaciones se cambia haciendo 2 clic en la linea de relaciones:



SELECT Consulta1.CampoA, Consulta2.CampoB
FROM Consulta1 RIGHT JOIN Consulta2 ON Consulta1.CampoA = Consulta2.CampoB;

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Condición de existencia

Publicado por TinoS (76 intervenciones) el 05/11/2012 20:03:34
Buenas tardes.

Muchísimas gracias a los tres.
Sólo he probado con el ejemplo de Neckkito y funciona perfectamente para lo que quiero hacer.
Gracias de nuevo a todos.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar