Access - Numerar registros en una consulta

 
Vista:
sin imagen de perfil

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Numerar registros en una consulta

Publicado por Anonimo (3315 intervenciones) el 17/12/2021 13:37:10
Hay una función publicada:
1
Public Function NumeroDeOrden(ByVal Dato As Variant) As String

En la SQL que se publico a continuación -no parece que se utilice- lo cual lleva a pensar de que debe haber una tabla temporal intermedia en la que se obtiene ese dato y se le re-denomina a 'NroOrd'.

Analiza mi respuesta por si hay algo que puedas utilizar ya que tú si dispones de toda la información (y de primera mano).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Numerar registros en una consulta

Publicado por Mercedes Roca (22 intervenciones) el 18/12/2021 17:06:26
Buenas tardes.
Gracias a tu respuesta pude llegar a numerar los registros.
Ahora mi problema es que a pesar que ordeno la consulta en forma descendente (fecha más reciente a fecha mas antigua -campo FechaFact- y por el numero de factura mas alto al mas bajo -campo NroOrd-), DCount enumera los registros al revés: del número mas bajo al mas alto y de fecha más antigua a fecha mas reciente.
Podrás ayudarme a resolverlo
Gracias otra vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Numerar registros en una consulta

Publicado por Mercedes Roca (22 intervenciones) el 18/12/2021 20:45:40
Buenas tardes.
Problema resuelto, había que cambiar el operador menor (<) por mayor (>)
SELECT DCount("*","Items","IdItem='" & [IdItem] & "' And CDbl(NroOrd) >= " & CDbl([NroOrd])) AS Nro, Items.IdItem, BaseFacturas.NroOrd, BaseFacturas.FechaFact
FROM BaseFacturas LEFT JOIN Items ON BaseFacturas.CodItem = Items.Coditm
ORDER BY BaseFacturas.FechaFact DESC, BaseFacturas.NroOrd DESC;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar