Con el valor de 2 campos de un formulario preciso buscar si existen en otra tabla los mismos valores sino mensaje inexistente

Los campos son IDCliente y LiqNro de un formulario de pagos, a la hora de pagar preciso saber si el LiqNro a pagar pertenece al cliente, para eso deseo recorrer la tabla de liquidaciones y verificar si existe dicho nro de liquidación, sino vuelvo al campo de LiqNro.

3 respuestas

Respuesta
1

Puedes hacerlo de muchas formas. Por ejemplo, supongamos que tengo la tabla Tabla1 con

En un formulario, me voy a un registro nuevo y escribo un número que ya está

Cuando pulso Enter

Cuando pulse Aceptar, el cursor se queda en el control LiqNro y te "marca" en negro 222 para que lo cambies.

Otra formas, sería, en la propia tabla poner el campo LiqNro como Indexado Sin Duplicados.

Y hay más.

En el ejemplo del mensaje, en el evento Antes de actualizar del cuadro de texto LiqNro le pones

Private Sub LiqNro_BeforeUpdate(Cancel As Integer)
If DCount("*", "tabla1", "liqnro=" & Me.LiqNro & "") >= 1 Then
MsgBox "Ese numero ya existe, tendrás que cambiarlo", vbOKOnly, "Otro día quizá, pero hoy no"
End If
End Sub

Por eso sería conveniente que dijeras que quieres que suceda cuando se dé el caso de que escribas un número que ya existe.

En elm caso de que quisieras comprobar si ese LiqNro corresponde a un idcliente determinado

sería

Private Sub LiqNro_BeforeUpdate(Cancel As Integer)
If DCount("*", "tabla1", "liqnro=" & Me.LiqNro & " and idcliente=" & Me.IdCliente & "") >= 1 Then
MsgBox "Ese numero ya existe con ese cliente, tendrás que cambiarlo", vbOKOnly, "Otro día quizá, pero hoy no"
End If
End Sub
Respuesta
1

Las respuesta es muy acertada y bien explicada, algo que no hacen otros, lo único que propongo es cambiar:

DCount("*", "tabla1", "liqnro=" & Me.LiqNro & " and idcliente=" & Me.IdCliente & "") >= 1

Por 

DCount("*", "tabla1", "liqnro=" & Me.LiqNro & " and idcliente=" & Me.IdCliente & "") >0
Respuesta
1

La lógica booleana solo admite dos valores: Verdadero / Falso

Access NO utiliza un BIT, en su lugar y con el fin de flexibilizar la programación (y facilitarle sus procesos internos) utiliza un dato de tipo entero largo.

Esto le lo le permite utilizar el valor Cero como FALSE (al igual que cualquier otro entorno de programación) y cualquier valor diferente de Cero (en el rango de un entero largo) como Verdadero.

La comparación real es:
=0 ====> FALSO
<> 0 ====> Verdadero

Por lo que ambas son igual de validas y equivalentes entre ellas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas