ACCESS: Mostrar ultimo registro automáticamente si se cumplen parámetros

Acudo a su ayuda para poder mostrar el siguiente valor.

Tengo una tabla que tiene los siguientes campos (columnas) por registro:

"Numero de Caso","Tipo de Caso", "Código de Empresa", y "Año de Caso"

Con estos 4 parámetros se genera un código y así se registra el caso en la base de datos:

Ejemplo: 001-AE-ABC-2015

Que sería el caso 001 del tipo Asesoría Empresarial (iniciales AE) para la empresa ABC en el año 2015

Lo que estoy buscando es que al momento de seleccionar el "Tipo de Caso", la "Empresa" y el "Año" me muestre automáticamente en un cuadro de texto independiente el ultimo caso registrado que cumpla esos parámetros, de tal manera que ya uno puede saber que numero de caso debería seguir.

Espero puedan ayudar con esta dificultad.

De antemano MIL gracias por la ayuda que me puedan brindar.

Slds,

T.

1 Respuesta

Respuesta
3

Puedes conseguirlo con la función DMax(), poniendo en los eventos Despues de actualizar de los tres campos este código_

Dim elCaso As Variant, laEmpresa As Variant, elAño As Variant

elCaso=Me.Tipo_de_Caso

laEmpresa=Me.Codigo_de_Empresa

elAño=Me.Año_de_Caso

If IsNull(elCaso) Or IsNull(laEmpresa) Or IsNull(elAño) Then Exit Sub

Me.txtUltimoCaso=DMax("[Numero de Caso]","NombreTabla","[Tipo de Caso]='" & elCaso & "' AND [Código de Empresa]='" & laEmpresa & "' AND [Año de Caso]=" & elAño)

En este código tendrás que cambiar los nombres de los campos que yo he supuesto por los nombres exactos que tu tengas, NombreTabla por el nombre de la tabla, y txtUltimoCaso por el de tu cuadro de texto independiente.

Además, he supuesto que los campos Tipo de caso y Codigo de empresa son de tipo texto, si no lo fueran, tendrías que quitar del código las comillas simples.

Otra alternativa sería usar un recordset:

Dim elCaso As Variant, laEmpresa As Variant, elAño As Variant

Dim rst As DAO.RecordSet

elCaso=Me.Tipo_de_Caso

laEmpresa=Me.Codigo_de_Empresa

elAño=Me.Año_de_Caso

If IsNull(elCaso) Or IsNull(laEmpresa) Or IsNull(elAño) Then Exit Sub

Set rst=CurrentDB.OpenRecordset("SELECT * FROM NombreTabla WHERE [Tipo de Caso]='" & elCaso & "' AND [Código de Empresa]='" & laEmpresa & "' AND [Año de Caso]=" & elAño & " ORDER BY [Numero de Caso]")

If rst.RecorCount=0 Then

Me.txtUltimoCaso=0

Else

rst.MoveLast

Me.txtUltimoCaso=rst("Numero de caso")

End If

rst.close

set rst=Nothing

Otra opción sería que te crearas una consulta de totales (la llamaré CUltimoCaso), cogiendo esos 4 campos, y agrupando el campo Numero de Caso por Máximo, para tener en esa consulta el último (el máximo) número de caso de cada tipo, empresa y año. Luego obtendrías ese valor por medio de la función DLookUp:

Dim elCaso As Variant, laEmpresa As Variant, elAño As Variant

elCaso=Me.Tipo_de_Caso

laEmpresa=Me.Codigo_de_Empresa

elAño=Me.Año_de_Caso

If IsNull(elCaso) Or IsNull(laEmpresa) Or IsNull(elAño) Then Exit Sub

Me.txtUltimoCaso=DLookUp("[Numero de Caso]","CUltimoCaso","[Tipo de Caso]='" & elCaso & "' AND [Código de Empresa]='" & laEmpresa & "' AND [Año de Caso]=" & elAño)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas