
Numerar registros en una consulta
Publicado por Mercedes Roca (22 intervenciones) el 17/12/2021 12:20:58
Buen día
Estoy trabajando con una base de datos y en una consulta de selección utilice un procedimiento que ya había usado en otra oportunidad con una sola tabla y funcionaba. Quiero adaptarlo a esta consulta y me da como resultado "Uso No Valido de Null"
Les cuento: tengo dos tablas "Items" y "BaseFacturas" y el resultado esperado en la consulta es que numere las "Facturas" del 1 hasta la última que corresponde a un mismo "Item"
La numeración tiene que ser de la factura más reciente a la mas antigua.
Tabla Items: campo IdItem (autonumerico) y CodItem (alfanumerico-String)
Tabla BaseFacturas: campo "CodItem" (texto corto: alfanumerico ej: 799CMP0000A21), campo "NroOrd" (numerico-Doble Ej. 33280), campo "FechaFact" (fecha corta).
No use el campo "FechaFact" porque en una misma fecha puede haber mas de 1 factura para el mismo "Item"
Use un modulo con el siguiente código:
Public Function NumeroDeOrden(ByVal Dato As Variant) As String
Static lngNumero As Long
Static DatoAnterior As String
DatoAnterior = 0
Dato = 0
If Dato = DatoAnterior Then
lngNumero = lngNumero + 1
Else
Dato = DatoAnterior
lngNumero = 1
End If
End Function
Use la consulta sql
SELECT DCount("*","Items","IdItem='" & [IdItem] & "' And CDbl(NroOrd) <= " & CDbl([NroOrd])) AS Consecutivo, Items.IdItem, BaseFacturas.NroOrd
FROM BaseFacturas LEFT JOIN Items ON BaseFacturas.CodItem = Items.Coditm
ORDER BY BaseFacturas.NroOrd DESC;
Desde ya agradezco vuestra ayuda.
Saludos
Estoy trabajando con una base de datos y en una consulta de selección utilice un procedimiento que ya había usado en otra oportunidad con una sola tabla y funcionaba. Quiero adaptarlo a esta consulta y me da como resultado "Uso No Valido de Null"
Les cuento: tengo dos tablas "Items" y "BaseFacturas" y el resultado esperado en la consulta es que numere las "Facturas" del 1 hasta la última que corresponde a un mismo "Item"
La numeración tiene que ser de la factura más reciente a la mas antigua.
Tabla Items: campo IdItem (autonumerico) y CodItem (alfanumerico-String)
Tabla BaseFacturas: campo "CodItem" (texto corto: alfanumerico ej: 799CMP0000A21), campo "NroOrd" (numerico-Doble Ej. 33280), campo "FechaFact" (fecha corta).
No use el campo "FechaFact" porque en una misma fecha puede haber mas de 1 factura para el mismo "Item"
Use un modulo con el siguiente código:
Public Function NumeroDeOrden(ByVal Dato As Variant) As String
Static lngNumero As Long
Static DatoAnterior As String
DatoAnterior = 0
Dato = 0
If Dato = DatoAnterior Then
lngNumero = lngNumero + 1
Else
Dato = DatoAnterior
lngNumero = 1
End If
End Function
Use la consulta sql
SELECT DCount("*","Items","IdItem='" & [IdItem] & "' And CDbl(NroOrd) <= " & CDbl([NroOrd])) AS Consecutivo, Items.IdItem, BaseFacturas.NroOrd
FROM BaseFacturas LEFT JOIN Items ON BaseFacturas.CodItem = Items.Coditm
ORDER BY BaseFacturas.NroOrd DESC;
Desde ya agradezco vuestra ayuda.
Saludos
Valora esta pregunta


0