Newsgroup: it.comp.appl.access
Titolo: Numerazione progressiva query access 2019

Buonasera,
ho bisogno di numerare progressivamente un campo di query 
(a partire però da 1 a seguire); 
ho provato con la funzione DCOUNT (usata su un campo ID di numerazione automatica), ma il risultato è che mi dà sempre il numero del campo ID..
L'ho impostata così:
NUM_RIGA: DCount("tblRigheDDT.NUMERO";"tblRigheDDT";"tblRigheDDT.NUMERO<" & [tblRigheDDT.NUMERO]).
Mi indicate la funzione esatta che devo utilizzare nella query?
 
Vi ringrazio davvero molto per il tempo e l'aiuto.
Leo
 

 Mi indicate la funzione esatta che devo utilizzare nella query?
 
Forse intendi:
 
DCount("*";"tblRigheDDT";"NUMERO<=" & [NUMERO])
 
Ciao
Karl
*********
Access News: 
https://youtu.be/wpPYu6G_xcY
 
Access DevCon: 
http://AccessDevCon.com
 
Access FAQ: 
https://www.donkarl.com/it
 


Ciao Karl, innanzitutto grazie per la risposta.
Ho impostato il campo nella query come mi hai indicato tu, ma mi continua a dare come risultato il campo NUMERO senza invece conteggiarlo da 1.
Si tratta di un query di accodamento dati, ed ho bisogno di numerare progressivamente le righe che accodo ogni volta, partendo sempre da 1 a salire.
E' come se la funzione DCount venisse ignorata..
Grazie mille!!

 E' come se la funzione DCount venisse ignorata..
 
Quali dati so trovano nel campo "NUMERO"? Mostra anche qualche esempio qui.
 
Forse se posti il testo SQL della query si può vedere meglio cosa succede.



il campo Numero ha i dati generati con la numerazione automatica di access; la mia query di accodamento ha un insieme di più tabelle.
Ti posto di seguito il testo SQL (è piuttosto lungo perchè ci sono molti campi presi da varie tabelle:
INSERT INTO dbo_MOV_RIGA_PROD ( CODICE_AZIENDA, ANNO_CONT, TIPO_MOV, CODICE_ANAGR, TIPO_DOC, CODICE_NUMERAZ, NUM_DOC, DATA_DOC, NUM_RIGA, CODICE_CESSIONE, CODICE_PROD, CODICE_UM, QTA_MOV, QTA_RIL, IMPORTO_UNIT, IMPORTO_COMPL, ALIQUOTA_IVA, CODICE_ANAGR )
SELECT tblANAG_CLIENTI.CODICE_AZIENDA, Year(Now()) AS ANNO_CONT, "T" AS TIPO_MOV, tblDestinatari.CODICE_FISCALE, "D" AS TIPO_DOC, tblANAG_CLIENTI.CODICE_PROCESSO, tblDDTLombardi.NUMERO, tblDDTLombardi.Data AS DATA_DOC, DCount("tblRIGHEDDTLOMBARDI.NUMERO","tblRIGHEDDTLOMBARDI","tblRIGHEDDTLOMBARDI.NUMERO<=" & [tblRIGHEDDTLOMBARDI.NUMERO])-104540 AS NUM_RIGA, "TR" AS CODICE_CESSIONE, tblRigheDDTLombardi.Veloce AS CODICE_PROD, tblAs400.UM AS CODICE_UM, [COLLI]*[tblRIGHEDDTLOMBARDI.MPL] AS QTA_MOV, "0" AS QTA_RIL, tblAs400.COSTO AS IMPORTO_UNIT, [COSTO]*[COLLI]*[tblRIGHEDDTLOMBARDI.MPL] AS IMPORTO_COMPL, tblAs400.IVA AS ALIQUOTA_IVA, tblCAUSALI.CODICE_ANAGR
FROM tblDestinatari RIGHT JOIN (tblCAUSALI RIGHT JOIN (tblANAG_CLIENTI RIGHT JOIN (tblDDTLombardi INNER JOIN (tblAs400 RIGHT JOIN tblRigheDDTLombardi ON tblAs400.VELOCE = tblRigheDDTLombardi.VELOCE) ON tblDDTLombardi.codDDT = tblRigheDDTLombardi.CodRigheDDT) ON tblANAG_CLIENTI.CODICEMULTICEDI = tblDDTLombardi.MITTENTE) ON tblCAUSALI.Causale = tblDDTLombardi.CAUSALE) ON tblDestinatari.DESTINATARIO = tblDDTLombardi.DESTINATARIO
GROUP BY tblANAG_CLIENTI.CODICE_AZIENDA, Year(Now()), "T", tblDestinatari.CODICE_FISCALE, "D", tblANAG_CLIENTI.CODICE_PROCESSO, tblDDTLombardi.NUMERO, tblDDTLombardi.Data, DCount("tblRIGHEDDTLOMBARDI.NUMERO","tblRIGHEDDTLOMBARDI","tblRIGHEDDTLOMBARDI.NUMERO<=" & [tblRIGHEDDTLOMBARDI.NUMERO])-104540, "TR", tblRigheDDTLombardi.Veloce, tblAs400.UM, [COLLI]*[tblRIGHEDDTLOMBARDI.MPL], "0", tblAs400.COSTO, [COSTO]*[COLLI]*[tblRIGHEDDTLOMBARDI.MPL], tblAs400.IVA, tblCAUSALI.CODICE_ANAGR, tblDDTLombardi.AccodamentoDati
HAVING (((tblDDTLombardi.Data)<>Date()) AND ((tblCAUSALI.CODICE_ANAGR)=88883) AND ((tblDDTLombardi.AccodamentoDati)=False))
ORDER BY tblDDTLombardi.NUMERO, DCount("tblRIGHEDDTLOMBARDI.NUMERO","tblRIGHEDDTLOMBARDI","tblRIGHEDDTLOMBARDI.NUMERO<=" & [tblRIGHEDDTLOMBARDI.NUMERO]).

 INSERT INTO ...
 
Non credo davvero che tu veda la stessa cosa in "NUM_RIGA" e in 
"NUMERO". Ma in ogni caso, ti consiglierei di eliminare le colonne e le 
tabelle passo dopo passo in una copia della query finché i due campi non 
mostrano qualcosa di diverso. Forse troverai la ragione per cui non 
mostra quello che ti aspettavi.



Ciao Karl,
infatti vedo due numeri diversi, ovvero per farti un esempio,
in NUM_RIGA 104617 mentre in NUMERO 185268,
in NUM_RIGA 104618 mentre in NUMERO 185269
in NUM_RIGA 104641 mentre in NUMERO 185292.
Non dovrebbe partire da 1 il campo NUM_RIGA? Non capisco perchè parte invece da un numero così alto..
Grazie!

 Non dovrebbe partire da 1 il campo NUM_RIGA? Non capisco perchè parte invece da un numero così alto..
 
Non conosco i tuoi dati. Peró le parentesi quadre non sembrano impostate 
correttamente e la sottrazione è utile solo se buoi "saltare" molti 
record. Cosa ricevi se invece di
 
DCount("tblRIGHEDDTLOMBARDI.NUMERO","tblRIGHEDDTLOMBARDI","tblRIGHEDDTLOMBARDI.NUMERO<=" 
& [tblRIGHEDDTLOMBARDI.NUMERO])-104540 AS NUM_RIG
 
usi
 
DCount("*","tblRIGHEDDTLOMBARDI","NUMERO<=" & 
[tblRIGHEDDTLOMBARDI].[NUMERO]) AS NUM_RIG
 
?



Mi da: 
Errore di sintassi nell'espressione. Operando o operatore mancante, carattere o virgola non valida oppure testo immesso non racchiuso tra virgolette.

 Errore di sintassi nell'espressione. Operando o operatore mancante, carattere o virgola non valida oppure testo immesso non racchiuso tra virgolette.
 
È la sintassi per il testo SQL. Nell'editore della query devi usare:
 
NUM_RIG: DCount("*";"tblRIGHEDDTLOMBARDI";"NUMERO<=" & 
[tblRIGHEDDTLOMBARDI].[NUMERO])
 



Buongiorno Karl,
ho inserito la funzione che mi hai indicato, mi da sempre il risultato che ti ho indicato in precedenza,
cioè NUM_RIGA 104617 mentre in NUMERO 185268, ecc.
 

 cioè NUM_RIGA 104617 mentre in NUMERO 185268, ecc.
 
Come detto, non conosco la tua applicazione e i tuoi dati. Potrebbe 
essere che il risultato sia semplicemente corretto?
 
Stai praticamente confrontando i record della query con la tabella. Se 
la tua query esclude molti record che esistono nella tabella, allora il 
risultato potrebbe essere potenzialmente corretto.
 
In questo caso per ottenere un numero consecutivo che inizia con 1, 
invece di usare la tabella nella funzione DCount, dovresti usare 
un'altra query che esclude gli stessi record.



D'accordo Karl, provo ad usare una nuova query.
Ti ringrazio molto per l'aiuto.
Ciao
Leo