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?
:evil: