Buscar registro en Formulario
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84755
Fecha de impresión: 27/Marzo/2026 a las 00:08
Tema: Buscar registro en Formulario
Publicado por: Weapon
Asunto: Buscar registro en Formulario
Fecha de publicación: 14/Octubre/2019 a las 12:21
|
Un saludo a todos, solicito vuestra ayuda con lo siguiente: En un Formulario llamado "FIncidenciasMto_Nuevas" que se alimenta de la Tabla "tblDatos_Averías" tengo un campo txt con formato "Fecha corta" llamado "FechaAvería_BUSQUEDA", al insertar una fecha mediante el evento "Al cambiar" pretendo que busque en la Tabla citada anteriormente si existe un registro con la fecha coincidente y muestre los datos en el formulario y si no lo encuentra lanze un MSGBOX en el que diga que no encuentra un registro coincidente. Lo he intentado hacer pero me da el siguiente error.
Texto del error: Se ha producido el error '3077' en tiempo de ejecución: Error de sintaxis en la fecha en la exprexión
Codigo: Private Sub FechaAvería_BUSQUEDA_Change() Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[FechaAvería] = #" & Me![FechaAvería_BUSQUEDA] & "#" If Not rs.EOF Then Me.Bookmark = rs.Bookmark Me.FechaAvería_BUSQUEDA = "" End Sub
Error en esta línea de código: rs.FindFirst "[FechaAvería] = #" & Me![FechaAvería_BUSQUEDA] & "#"
Gracias de antemano, un saludo
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Respuestas:
Publicado por: Mihura
Fecha de publicación: 14/Octubre/2019 a las 12:53
|
Las fechas en formato yanki:
rs.FindFirst "[FechaAvería] = #" & Format(Me![FechaAvería_BUSQUEDA], "mm/dd/yyyy") & "#"
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: Weapon
Fecha de publicación: 14/Octubre/2019 a las 13:19
Gracias Jesús por tu atención, sigue dándome el mismo error.
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Publicado por: Mihura
Fecha de publicación: 14/Octubre/2019 a las 14:00
Pon un punto de interrupción y comprueba el valor de la expresión construida.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: Weapon
Fecha de publicación: 14/Octubre/2019 a las 14:40
Me has dejado pillado, como lo hago?
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Publicado por: Weapon
Fecha de publicación: 14/Octubre/2019 a las 14:43
Se poner un punto de interrupción, pero luego donde compruebo el valor de la expresión construida.
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Publicado por: Mihura
Fecha de publicación: 14/Octubre/2019 a las 15:33
|
En la ventana inmediato haces un print de lo que quieras comprobar:
? "[FechaAvería] = #" & Format(Me![FechaAvería_BUSQUEDA], "mm/dd/yyyy") & "#"
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: prga
Fecha de publicación: 14/Octubre/2019 a las 15:52
|
Hola. Sin entrar en otras consideraciones, creo que en el evento change habría que utilizar Me![FechaAvería_BUSQUEDA].text Si no es así, siempre nos saldrá el valor "original" del cuadro de texto y no los cambios hechos. Espero que ayude a resolver la duda. Ya comentas. Un saludo a todos
|
Publicado por: Mihura
Fecha de publicación: 14/Octubre/2019 a las 16:13
Lo del change no me había percatado yo ... , gracias prga.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: rokoko
Fecha de publicación: 14/Octubre/2019 a las 16:18
Y en el evento despues de actualizar utilizando un DCount y como criterio la fecha? If DCount("nombrecampofecha","nombretabla","nombrecampofecha=#me.FechaAvería_BUSQUEDA#") > 0 then Msgbox"existe" Else Msgbox"no existe" End if
|
Publicado por: Weapon
Fecha de publicación: 14/Octubre/2019 a las 17:30
|
Utilizando el DCount de "rokoko" ahora lanza el siguiente error:
Texto del error: Se ha producido el error '3075' en tiempo de ejecución: Error de sintaxis en la fecha en la exprexión de consulta 'FechaAvería=#me.FechaAvería_BUSQUEDA"
Error en esta línea de código:
If DCount("FechaAvería", "tblDatos_Averías", "FechaAvería=#me.FechaAvería_BUSQUEDA#") > 0 Then
Gracias por vuestra ayuda y paciencia
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Publicado por: rokoko
Fecha de publicación: 14/Octubre/2019 a las 17:52
|
Prueba asi a ver, de memoria suelo fallar....
If DCount("FechaAvería", "tblDatos_Averías", "FechaAvería=# " & me.FechaAvería_BUSQUEDA & "#") > 0 Then
Y quizas debas darle formato americano para que access no se lie...
# " & Format(me.FechaAvería_BUSQUEDA,"mm/dd/yyyy") & "#
Saludos
Edito. Lo acabo de probar y asi funciona. Con formato americano, si no access se lia.
If DCount("FechaAvería", "tblDatos_Averías", "FechaAvería=# " & Format(Me.FechaAvería_BUSQUEDA, "mm/dd/yyyy") & "#") > 0 Then MsgBox "Existe" Else MsgBox "No existe" End If
En SQL y VBA siempre formato americano!!!!! le he pasado la fecha 02/01/2019 sabiendo que esta en tabla y me dice que no esta, eso pasa por no darle formato americano, lo identifica como 02/01/2019......
|
Publicado por: rokoko
Fecha de publicación: 14/Octubre/2019 a las 18:06
Y ya por tocarte un poco mas las narices , nunca dejes espacios o pongas tildes o cosas raras a los nombre de campos o tablas.....solo te daran dolores de cabeza....
Sobre fechas del maestro Mihura.... http://www.accessaplicaciones.com/ejemplos.html#rt07" rel="nofollow - http://www.accessaplicaciones.com/ejemplos.html#rt07
|
Publicado por: Weapon
Fecha de publicación: 14/Octubre/2019 a las 18:07
|
Sigue dando el mismo error y en la misma línea de código.
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
Publicado por: rokoko
Fecha de publicación: 14/Octubre/2019 a las 18:15
Weapon escribió:
Sigue dando el mismo error y en la misma línea de código.
|
Pues a mi me a funcinado y con esos mismos nombre de tabla y campos.. https://www.dropbox.com/s/gzyxm0jl7hlizzh/Buscar%20registro%20x%20fecha.mdb?dl=0
|
Publicado por: Weapon
Fecha de publicación: 15/Octubre/2019 a las 10:13
|
Gracias por vuestra ayuda Mihura, prga, rokoko. Finalmente lo he resuelto de la siguiente forma:
Private Sub FechaAvería_BUSQUEDA_AfterUpdate() If DCount("FechaAvería", "tblDatos_Averías", "FechaAvería=# " & Format(Me.FechaAvería_BUSQUEDA, "mm/dd/yyyy") & "#") > 0 Then '.... Dim rst As DAO.Recordset '.... Set rst = Me.RecordsetClone rst.MoveFirst rst.FindFirst "[FechaAvería] = #" & Format(Me![FechaAvería_BUSQUEDA], "mm/dd/yyyy") & "#" If Not rst.EOF Then Me.Bookmark = rst.Bookmark End If Else msbTexto = "" msbTexto = msbTexto & vbCrLf & " Trabajo pendiente de registrar en la Base de Datos !!" msbTitu = "Registro Trabajos" msbOpc = vbOKOnly + vbInformation MsgBox msbTexto, msbOpc, msbTitu End If Me.FechaAvería_BUSQUEDA = "" End Sub
Se puede cerrar el hilo, muchas gracias
------------- Saludos desde Torrejón de Ardoz, Madrid, España!!
Domingo
|
|