|
Responder ![]() |
Autor | |
Antonio Pedro ![]() Asiduo ![]() Unido: 13/Diciembre/2005 Estado: Sin conexión Puntos: 294 |
![]() Enviado: 25/Julio/2022 a las 23:51 |
Un Saludo, os comento el asunto por si me podeis orientar. Tengo dos tablas (TDatosPersonales y TNuevaPresentacion) y como campo clave el número de documento. Tengo un formulario independiente (FDatospersonales) para que me muestre la consulta mediante el numero de documento. En dicho formulario se muestran todos lo campos de la tabla TDatospersonales y un campo de la tabla TNuevaPresentacion (Fechapresentacion).
Por ejemplo registro un dni 11111111-A y fecha presentacion:01/01/2022, inserto otra el mismo dni pero con una fecha diferente 25/07/2022. Pues bien, lo que estoy intentando y no doy con ello es que a la hora de realizar una consulta me muestre el ultimo registro insertado, es decir que me mostrara 25/07/2022, para ello tengo insertada la siguiente instrucción al cargar el formulario FDatospersonales: DLast ("FechaPresentacion","TNuevaPresentacion","Numero='"&Forms!FConsultadocumentacion!Numerodocumento &"'"). FConsultadocumentacion es un formulario desde donde realizo la consulta y lo que deseo buscar (documento y numero) Dni y 111111111-A. Y como dije anteriormente en vez de mostrarme el ultimo registro insertado con la ultima fecha insertada, me muestra el primero 01/01/2022. Como debería de plantearlo para que me mostrara la ultima fecha introducida. Un Saludo. |
|
![]() |
|
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13756 |
![]() |
El DLast puede darte esas sorpresas, ... ¿te podría valor un DMax? ... es decir suponiendo que introduces las fechas en orden.
En caso de que lo anterior no te valga, tendrías que hacerte una consulta (mejor con un RecordSet) que cogiera la tabla TNuevaPresentación filtrada por el DNI, ordenada por el ContadorId (porque supongo que tienes un campo Id autonumérico que haga de contador) descendente y te quedas con el primer registro (TOP 1). |
|
![]() |
|
Antonio Pedro ![]() Asiduo ![]() Unido: 13/Diciembre/2005 Estado: Sin conexión Puntos: 294 |
![]() |
Saludos y gracias por contestar, comentarte lo que he realizado y no me da el resultado que estoy buscando, adjunto la instrucción:
Dim
dbs As DAO.Database Dim
rst As DAO.Recordset Dim mySql As String 'Definimos las variables mySql = "SELECT TOP 1 ID,FechaPresentacion, Numero FROM TNuevaPresentacion WHERE Numero = '" & Forms!FConsultadocumentacion!Numerodocumento & "' ORDER BY FechaPresentacion DESC;" Set dbs = CurrentDb Set rst = dbs.OpenRecordset(mySql,
dbOpenSnapshot) Fechapresentacion.value =
rst.Fields("FechaPresentacion").value 'Limpiamos memoria If Not rst Is Nothing Then rst.Close Set rst = Nothing End If If Not dbs Is Nothing Then dbs.Close Set dbs = Nothing End If Me salta error 3021, No hay ningún registro activo. y me marca la instrucción Fechapresentacion.value = rst.Fields("FechaPresentacion").value Un Saludo. |
|
![]() |
|
xavi ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14552 |
![]() |
Hola,
Varias cosas 1. ¿Desde dónde lanzas ese código? Porque a lo mejor puedes cambiar la llamada al formulario por un simple Me!Numerodocumento 2. Pon un punto de interrupción después de la asignación de la variable mySQL para comprobar que, efectivamente, estás tomando un valor para la WHERE 3. Después de la apertura del Recorset comprueba si tienes datos en el mismo (If rst.EOF ... es que está vacío) 4. (manías personales) Ese código puede quedar mucho más corto si: 4.1 No utilizas la variable dbs y, en su lugar, invocas directamente a CurrentDb 4.2 Lanzas la SQL directamente en el OpenRecordset y unicamente con el valor que quieres recuperar 4.3 Cierras si o si el recordset Algo así: Dim rst As DAo.Recordset Set rst = CurrentDb.OpenRecordset("SELECT TOP 1 FechaPresentacion FROM TNuevaPresentacion WHERE Numero = '" & Me!Numerodocumento & "' ORDER BY FechaPresentacion DESC") If rst.EOF Then ' vacío: no hacemos nada Else ' Con datos. Tomamos valor Me!FechaPresentacion = rst!FechaPresentacion End If rst.Close Set rst = Nothing 5. Dado que buscas el valor máximo de la fecha de presentación, ¿porqué no utilizas el DMax como sugirió Mihura? Incluso controlando el nulo para devolver un blanco. Algo así: Me!FechaPresentacion = Nz(DMax("FechaPresentacion", "TNuevaPresentacion", "Numero = '" & Me!NumeroDocumento & "'"), "") Nota: todos los código escritos al vuelo. Un saludo
|
|
![]() |
|
joanka ![]() Habitual ![]() Unido: 07/Abril/2021 Localización: Lleida Estado: en línea Puntos: 111 |
![]() |
Hola,
Prueba a añadir en la consulta el parámetro Id además del DNI. Con DLast te tendría que funcionar correctamente. Saludos.
|
|
![]() |
|
Antonio Pedro ![]() Asiduo ![]() Unido: 13/Diciembre/2005 Estado: Sin conexión Puntos: 294 |
![]() |
Hola y Saludos. Se me había pasado esta pregunta, gracias a Xavi por su respuesta, ya lo solucione gracias a su ayuda.
Se puede cerrar el hilo. Saludos.
|
|
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |