Einzelnen Beitrag anzeigen

bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#4

Re: Daten mit DataSet in Datenbank schreiben

  Alt 12. Mär 2007, 09:28
Zitat:
Zitat von Hansa:
Am besten so :

Delphi-Quellcode:
   with D_DataModule.DataSet do
   D_DataModule.DataSet.Edit;
   while not D_DataModule.DataSet.Eof do begin
      D_DataModule.DataSet.FieldByName('FAID').AsInteger;
      reg.customer[reg.Ac_ID].ID; ...
   end;
   D_DataModule.DataSet.Post;
   ...
   D_DataModule.DataSet.Close;
P.S.: das Value würde ich mir abgewöhnen. Habe z.B. jetzt nur geraten, ob es überhaupt um integer geht.
Vergiss es, so läuft es nicht.

Erstmal frage ich mich, ob es überhaupt gehen würde. Schließlich ist das kein einfacher SELECT * sondern mit Funktionen. Zum anderen ÜBERSCHREIBST du die Zeilen einfahc (Edit) statt anzuhängen.

Besser ist:

Delphi-Quellcode:
var
  Query: TADOQuery;
...
Query := TADOQuery.Create(nil);
Query.Connection := ...;
Query.SQL.Text := 'INSERT INTO tabelle (feld1, feld2, ...) VALUES (:feld1, :feld2, ...)';
Query.Parameters.ParamByName('feld1').Value := ...;
...
Query.Execute;
Query.Free;
Oder alternativ:

Delphi-Quellcode:
var
  Query: TADOQuery;
...
Query := TADOQuery.Create(nil);
Query.Connection := ...;
Query.SQL.Text := 'SELECT * FROM tabelle WHERE 1=0';
Query.Open;
Query.Append;
Query.FieldByName('feld1').Value := ...;
...
Query.Post;
Query.Close;
Query.Free;
hab das jetzt nicht komplett ausprobiert, kann sein dass hier und da kleine Fehler sind. Z.B. kann es sein, dass TADOQuery dir mit deiner DB nichts nützt. Bei anderen Datasets heißt es dann nicht Parameters.ParamByName sondern Params.ParamByName. Aber grob stimmt es so jedenfalls.
  Mit Zitat antworten Zitat