Comparar campo de un form con el de una consulta

No se si se puede comprar un campo de un formulario con el mismo de una consulta en VBA. Si se puede, ¿me podrías decir cuales son las sentencias que se utilizarían?
Por ejemplo quiero comparar el campo Trimestre que estoy introduciendo en el formulario con el campo Trimestre de una consulta llamada "Estos Trimestres existen para el año elegido"
Espero que puedas ayudarme porque ya no se me ocurren más opciones. Esto lo estoy haciendo para dar mensajes de error cuando el usuario intenta insertar un registro repetido.

2 Respuestas

Respuesta
1
Puedes utilizar el dcount, que es una función que tiene tres parámetros
El primero es una idiotez, ponle un uno. Indica lo que se cuenta.
El segundo es de dónde toma los datos
El tercero una condición que deben cumplir los registros contados
En tu caso deberías tener algo así como
dim i%
i=dcount("1","[Estos Trimestres existen para el año elegido]","Trimestre=" & me.trimestre)
if i=0 then
msgbox("NoTá")
else
msgbox("SiTá")
Endif
Suponiendo que la consulta tenga un campo llamado Trimestre de tipo numérico. Si es alfanumérico el tercer parámetro del dcount sería
"Trimestre='" & me.trimestre & "'"
También he indicado con trimestre el nombre del campo en el formulario que introduce el usuario, se reconoce porque delante lleva el me.
Respuesta
1
Bien, si se puede, ya que hablas de VBA, vamos a solucionarlo por ahí.
Te voy a poner el código para abrir un recordset en access por vba, este código lo pegas en el evento exit del campo que quieras comparar y comparas si el valor devuelto era ese:
Option Compare Database
Option Explicit
Dim cnn As Connection
Dim rsM As ADODB.Recordset
Dim SENTENCIA As String
Private Sub MODELO_Change()
'CAMPO es el campo de la consulta que tiene que ser igual al CAMPO_FORMULARIO que es el campo del formulario ; )
SENTENCIA = "SELECT * FROM TABLA WHERE CAMPO = '" & CAMPO_FORMULARIO & "'"
Set cnn = CurrentProject.Connection
cnn.CursorLocation = adUseClient
Set rsM = New ADODB.Recordset
rsM.Open SENTENCIA, cnn, adOpenKeyset, adLockOptimistic
If rsM.RecordCount > 0 then
'si la propiedad RecordCount es mayor que 0 quiere decir que ha encontrado
'algun registro que coincide, entones tendrías que poner dentro de este if lo que fueras a mostrar.
end if
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas