Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: antoniog - Giugno 06, 2013, 10:40:15 pm
-
Utilizzando ormai per il 90% del mio lavoro Linux Mint ho voluto convertire un vecchio progetto, con molti archivi da non perdere, ancora attuale scritto in Delphi4 (che utilizza tabelle DBF) in Lazarus con l'utilizzo tabelle SQLite.
Inizialmente ho pensato di trasformare le tabelle DBF in CVS utilizzando programmi scaricabili dal web come DBF Viewer Plus scaricabile da : http://www.alexnolan.net/software/ , oppure con LibreOffice Calc ma non tutte le tabelle veniva lette correttamente, quelle lette correttamente e salvale in CVS avevano il nome dei campi modificati, per esempio il campo "codice" veniva rinominato in "codice_C_60" il che mi costringeva a riscrivere tutte le procedure che utilizzavano le tabelle e poi importando la tabella in un database SQLite bisognava aggiungere il campo 'INTEGER PRIMARY KEY' e cambiare il TIPO dei campi per poterli utilizzare correttamente sotto Lazarus, quindi ho abbandonato l'idea e ho deciso di ricreare le tabelle direttamente sotto SQLite.
Perche SQLite e non ProsgreSQL o FlameRobin o MySQL? Perchè SQLite non è complicato e non richiede null'altro che: sotto Linux l'installazione tramite la 'gestione pacchetti', sotto Window lo scaricamento e la copia di sqlite.Dll (sqlite3.dll) nella directory di lavoro. Per creare i nuovi database ho provato molti programmi ed alla fine ho deciso che i migliori sono:
SQLite Database Browser, scaricabile da : http://sqlitebrowser.sourceforce.net , e Sqlite-Manager che si installa sotto Mozilla Firefox e scaricabile quì : https://code.google.com/p/sqlite-manager/. Il secondo è più flessibile e completo ma non consente, salvo smentite, di aggiungere l' 'INTEGER PRIMARY KEY' ad una tabella esistente mentre SQLite Database Browser lo consente. Il concetto di database è diverso se si utilizzano tabelle DBF o SQL, con i DBF il database è la directory dove si trovano le tabelle, con SQL il database è un file che contiene le tabelle. Per realizzare il programma, sotto un progetto Lazarus, o creato due datamoduli 'DataSQL' e DataDBF' ogni datamodulo contiene le stesse tabelle con lo stesso nome dei campi, Ho dovuto convertire il TIPO dei campi come segue:
DBF SQLite
C VARCHAR
N REAL o INTEGER
L BOOL
D DATE
M TEXT
nelle tabelle SQL, per un corretto funzionamento, è necessario mettere al primo posto un campo es. 'IDX' come 'INTEGER PRIMARY KEY'.
Nelle tabelle SQL non serve ricreare l'indice originario come nelle tabelle DBF in quanto è prossibile riordinare a runtime semplicemente cambiando la proprietà delle tabelle: SortedFileds:=Nomecampo;
Potete scaricare il programma di esempio da quì:
http://www.genuardi.net/download/DaDBFaSQLite.zip
il programma importa i dati di tabelle DBF in tabelle SQLite, funzionante sotto Linux Mint-Ubuntu e sotto Windows xp e Windows 7, serve solo ricompilarlo sulla propria piattaforma.