Imprimir página | Cerrar ventana

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 ... Ouch, 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 naricesBig smile, 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
Publicado originalmente por Weapon 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



Imprimir página | Cerrar ventana