Entwickler-Ecke

Datenbanken - Probleme mit ADODataset1.LoadFromFile


Eritacus - Do 04.11.10 17:17
Titel: Probleme mit ADODataset1.LoadFromFile
Hallo zusammen,
bevor ich das hier geschrieben habe, habe ich überall gesucht und gegoogelt....ohne Erfolg. Viele haben die gleichen Probleme,
aber nirgendwo ist die Ursache oder eine Lösung beschrieben, daher ein neuer Versuch:

Ich benutze ADODataset1.SaveToFile(Dateiname) ---> klappt wunderbar, korrekte xml entsteht

Ich benutze anschließend ADODataset1.LoadFromFile(Dateiname) ---> die Datei wird korrekt geladen und im Grid angezeigt.

ABER: ich kriege die geladenen Daten nicht in die Datenbank! (stinknormales Acces)

Weiß jemand Rat? Würde mir sehr helfen...

Gruß Eritacus


bummi - Do 04.11.10 18:36

da musst Du schon drüberlaufen und die Daten "von Hand" in die DB schreiben.


Eritacus - Do 04.11.10 19:40

Das dachte ich mir schon. Geht ja auch, ist aber eben umständlich.
Eigentlich komisch, eine scheinbar tolle Funktionalität und dann dieser Schwachpunkt.

Danke!


PistolenPeter - Di 10.05.11 12:23

Hallo zusammen,

das gleiche Problem hatte ich auch.
Meine Lösung:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
  DataSetSource.LoadFromFile(FileName);

  CreateTable(DataSetSource); // eigene Methode erstellt leere Tabelle je nach Zieldatenbank
  DataSetDest.CommandText := 'SELECT * FROM FileName WHERE 1=0';
  DataSetDest.Open;

  while NOT DataSetSource.Eof do
  begin
    DataSetDest.Insert;

    for n := 0 to DataSetSource.Fields.Count - 1 do
    if NOT DataSetSource.Fields[n].IsNull then
      DataSetDest.Fields[n].Value := DataSetSource.Fields[n].Value;
    DataSetDest.Post;

    DataSetSource.Next;
  end;
end;


Das ist allerdings sehr langsam.
Ich habe schon probiert das "DataSetDest.Post" erst nach dem gesamten Durchlauf auszuführen, aber das hat auch keinen merklichen Unterschied gemacht.

Hat jemand einen Idee, wie man das Ganze etwas schneller hinbekommt?
Es müsste doch eine Möglichkeit geben über das Recordset Daten zu kopieren, oder nicht?
Alle Versuche in diese Richtung sind allerdings kläglich gescheitert.

Grüße
Peter