Dopo avere creatop le mie bravetabelle nel DB agganciato al progetto che sto scrivendo, pensavo di poetere caricare e gestire i dati in maniera snella e sicura. Ahimè, mi sbagliavo perché ho cominciato a caricare manualmente alcuni dati per potere provare una parte di codice ed ho riscontrato le seguenti differenze:
Tabella n°1:
la primary key é attribuita ad una colonna definita in fase di creazione come integer. Ho caricato disordinatamente tramite Sqliteman(Knoda) diversi record che dopo il commit mi sono ritrovato perfettamente in ordine ascndente di chiave primaria. Le istruzioni di creazione sono:
1. sql = "CREATE TABLE 'PianCont' ("
2. sql = sql & " 'NumVoce' INTEGER,"
3. sql = sql & " 'NomeVoce' VARCHAR(50) DEFAULT NULL,"
4. sql = sql & " 'DtCarico' INTEGER DEFAULT NULL,"
5. sql = sql & " 'NuMovv' INTEGER DEFAULT NULL,"
6. sql = sql & " 'AvvScad' CHAR(1) DEFAULT NULL,"
7. sql = sql & " PRIMARY KEY ("
8. sql = sql & " 'NumVoce')"
9. sql = sql & " );"
10. sqltable = DB_Connection.Exec(sql)
In questo caso la primary key é la colonna "NumVoce" dichiarata alla riga 2 come INTEGER.
Tabella n°2:
la primary key é attribuita ad una colonna definita in fase di creazione come CHAR(8). Anche in questo caso ho caricato alcuni record in maniera disordinata. Questa volta però, dopo il commit, é stato mantenuto l'ordine di inserimento che, ovviamente, non é quello ascendente di chiave primaria. Riporto le istruzioni di creazionme della tabella:
1. sql = "CREATE TABLE 'RiepMovg' ("
2. sql = sql & " 'DtCoMovg' CHAR(8),"
3. sql = sql & " 'StaDtMovg' CHAR(1) DEFAULT NULL,"
4. sql = sql & " 'TotEntrg' INTEGER,"
5. sql = sql & " 'TotUscg' INTEGER,"
6. sql = sql & " 'RipFing' INTEGER,"
7. sql = sql & " PRIMARY KEY ('DtCoMovg')"
8. sql = sql & " );"
9. sqltable = DB_Connection.Exec(sql)
La primary key é la colonna "DtCoMovg" é dichiarata alla riga 2 come CHAR(8).
Tabella n°3:
Questa volta ho definito una chiave "UNIQUE", attribuita all'unica colonna della tabella, definita in fase di creazione come CHAR(8). Per quest'ultima tabella ho caricato qualche record man manio che andavo avanti con le prove, quindi a maggior raggionme i record sono stati caricati in maniera disordinata. Ad ogni commit dato, l'ordine in cui sono presntati i record é quello di inserimento. Ecco le istruzioni di creazionme della tabella:
1. sql = "CREATE TABLE 'GGAperte' ("
2. sql = sql & " 'DtCoGGAp' CHAR(8),"
3. sql = sql & " UNIQUE ('DtCoGGAp')"
4. sql = sql & " );"
5. sqltable = DB_Connection.Exec(sql)
Dalla riga 2 é visibile che la colonna 'DtCoGGAp', chiave UNIQUE della tabella é definita come CHAR(8) .
E' superfluo dire che, ottenendo un sequenza disordinata di record in tabella, i risultati a cui perviene l'esecuzione del programma sono ingestibili. Ho allora provato ad inserire nella definizione della chiave il parametro ASC che ho interpretato come "ascbnedente", ma ottengo un errore alla
sqltable = DB_Connection.Exec(sql).
Ho riletto la praticissima costruenda guida di fsurfing, ma la casistica affrontata fino ad oggi non comprende un esempio che faccia al caso mio. Che cosa ho sbagliato?
:uhm:
Ciao