ich hab momentan eine riesige Datenmenge, die ich irgendwo hinschaufeln muss. Also dachte ich, dann schiebe ich das einfach mal in eine SQLite- DB und fertig.
Also habe ich eine Funktion
Code: Alles auswählen
procedure SL3CreateTable(const pcConn: TSQLite3Connection; const pcsTabellenName: String; const pcFieldDefs: TFieldDefs);
gebastelt, der ich aus einer Query die Definitionen hinüberschicke, die diese dann auf die verfügbaren SQLite- Datentypen umrubelt und eine Create- Table- Anweisung auslöst.
Das funktioniert ohne Probleme, die Tabellenstruktur wird aufgebaut.
Als nächstes habe ich dann eine Funktion gebastelt, die eine Query A in eine Query B kopiert.
Code: Alles auswählen
procedure SL3InsertTable(const pcConn: TSQLite3Connection; const pcsTabellenName: String; const pcQuery: TSQLQuery);
...
lvQ:= TSQLQuery.Create(NIL);
lvQ.SQL.Text:='SELECT * FROM '+pcsTabellenName;
lvQ.Active:=True;
while not pcQuery.EOF do begin
lvQ.Insert;
for lvnSpalte:=0 to pcQuery.Fields.Count - 1 do
try
lvQ.Fields[lvnSpalte].Value := pcQuery.Fields[lvnSpalte].Value;
except
..
end;
lvQ.Post;
pcQuery.Next;
end;
lvTrans.Commit;
lvQ.Active:=False;
...
Das Problem: Er gibt vor zu tun, was ich ihm sage. Aber es kommen keine Daten an. Was mache ich falsch? Ich habe schon diverse "Untersuchungen" durchgeführt, mit ApplyUpdates, alle Schritte einzeln per Formular gestartet, ein DB- Grid mit Navigator verbunden usw.
Es gelingt mir zwar offenbar, die Daten erst einmal zu "erfassen", aber sie kommen nie in der Datei an, egal, ob Commit oder ApplyUpdates ... es variieren im Prinzip immer nur die Varianten ob Fehler, wenn ja dann welche usw.
Hat jemand mal ein Szenario, was wirklich zu tun ist, um einer Tabelle Daten einzuhauchen (ohne einen INSERT- Befehl zusammenbasteln zu müssen)?
am2