Ho registrato manualmente, con lo strumento Sqliteman una tabella dove avevo definito una "Primary Key Integer". Dopo avere inserito 138 elementi, nelle prove di programma, mi sono accorto che avevo creato, per errore, una colonna non più necessaria. Ho cercato di eliminare la colonna sempre tramite Sqliteman, ma la funzione non era abilitata. Allora ho pensato ad uno stratagemma:
1) Ho caricato in memoria una tabella del tipo DIM TbPiaCont AS String[138, 5]
che ho valorizzato coi valori contenute nelle colonne della Tabella del DB;
2) Ho creato nel DB una nuova tabella con la seguente istruzione:
sql = "CREATE TABLE 'PianCont' ( 'NumVoce' INTEGER PRIMARY KEY ASC, 'NomeVoce' VARCHAR(50) DEFAULT NULL, 'ContrPartSiNo' CHAR(1) DEFAULT NULL, 'DtPrimoUso' INTEGER DEFAULT NULL )
3) ho popolato la tabella appena creata coi dati salvati prima nell'array di memoria:
WITH
DB_Connection
.Name = DBname
.OPEN 'Riapro il DB
END WITH
DB_Connection.begin
NomeRec = DB_Connection.CREATE("PianCont")
i_Conta = 0
FOR i_Conta = 0 TO i_NumEle
NomeRec!NumVoce = Val(TbPiaCont[i_Conta, 0])
NomeRec!NomeVoce = TbPiaCont[i_Conta, 1]
NomeRec!ContrPartSiNo = TbPiaCont[i_Conta, 2]
NomeRec.Update
NEXT
DB_Connection.Commit
DB_Connection.CLOSE
Soddisfatto che tutto aveva funzionato sono andato a guardare il DB e la tabella, in particolare, ed ho trovato la grande srpresa :-o
la colonna definita come Prtimary Key era stata valorizzata con una numerazione autoincrementale automatica, mentre avrei dovuto trovarvi il valore trasferitovi con l'istruzione:
NomeRec!NumVoce = Val(TbPiaCont[i_Conta, 0]).
Non contento ho inserito un "breakpoint" all'istruzione successiva ed ho notato che effettivamente il trasferimento non avviene, viene invece trasferito "NULL". Ma che significa? :-o :-?
Non posso far altro che passare la parola agli esperti. :ciao: