Non ci avevo fatto mai caso. Oggi, esaminando attentamente i dati rilevati da un programma di verifica sul contenuto del DB tenuto in continuo aggiornamento dal mio
ContabFam, ho avuto la sensazione che i record letti da una tabella non venissero sequenzializzati secondo il criterio del comando
"ORDER BY" dato nell'istruzione SQL relativa:
RecMovgg = ApriDB.DB_Connection.EXEC("SELECT * FROM movimgg ORDER BY CoVocMovvgg AND DtCoMovgg, DtSolMovgg, OraSolMovgg")
Secondo quando capito a suo tempo, l'ordine con cui i record sarebbero stati letti avrebbe dovuto seguire le seguenti priorità
1) Lettura dei record della tabella
"movimgg" in ordine crescente del contenuto colonna
"CoVocMovvgg" 2) Per tutti i record con lo stesso valore di
"CoVocMovvgg", secondo l'ordine crescente del contenuto colonna
"DtCoMovgg" 3) Per tutti i record con lo stesso valore di
"CoVocMovvgg" e
"DtCoMovgg", secondo l'ordine crescente del contenuto colonna
"DtSolMovgg" 4) Per tutti i record con lo stesso valore di
"CoVocMovvgg",
"DtCoMovgg" e
"DtSolMovgg", secondo l'ordine crescente del contenuto colonna
"OraSolMovgg"Invece tutto questo non è avvenuto ed i record sono stati passati al programma in maniera piuttosto disordinata:
=========================================================================
Livelli teorici di ordinamento: | 2° | 3° | 4° |------| 1° |
---------------------------------------------------------------------------------------------------------------------------------------------------
TestaMovimgg--> RecMovgg!IdMovvgg.'22709' ==> '20011230' | '20110626' | '211540' | '1' | '101601010' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22710' ==> '20011230' | '20110626' | '211839' | '2' | '101505012' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22711' ==> '20011230' | '20110626' | '214703' | '3' | '101300027' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22712' ==> '20011230' | '20110626' | '214748' | '4' | '101603012' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22713' ==> '20011231' | '20110704' | '152506' | '1' | '101300027' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22714' ==> '20011231' | '20110723' | '152637' | '2' | '101590002' |
TestaMovimgg--> RecMovgg!IdMovvgg.'22715' ==> '20011231' | '20110723' | '162559' | '3' | '101403004' |
TestaMovimgg--> RecMovgg!IdMovvgg.'26364' ==> '20110725' | '20110727' | '83304' | '1' | '101295003' |
TestaMovimgg--> RecMovgg!IdMovvgg.'26365' ==> '20110725' | '20110727' | '83339' | '2' | '101295003' |
TestaMovimgg--> RecMovgg!IdMovvgg.'26366' ==> '20110725' | '20110727' | '83449' | '3' | '101710002' |
Basta guardare l'ultima colonna di quelle riportate, corrispondente al
"CoVocMovvgg", per accorgersi che i codici vanno su è giù senza mantenere alcun ordine crescente.
Se non manca qualche parametro di ulteriore puntualizzazione nell'istruzione SQL, direi che SQLite3 non funziona come dovrebbe.
E allora? Come stare tranquilli durante l'esecuzione di un programma. se non si sa dove andrà a parare?