![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: InterBase
Daten mit DataSet in Datenbank schreiben
Hallo Leute,
habe mir folgende Procedure um Daten aus meiner Firebirddatenbank auszulesen geschrieben. Nun habe ich ne ganz einfache Frage. Wie muss ich eine zweite Procedure schreiben, um die gleichen Felder auf die Datenbank zu schreiben? Vielen Dank schon mal. -fapsons--
Delphi-Quellcode:
procedure Get_DB_Values; // Auslesen Kundennamen aus DB
var i, j, k :Integer; begin ... with D_DataModule.DataSet do begin SelectSQL.Clear; SelectSQL.Text := 'select upper(f.fname), f.fa_bez, f.faid from FIRMA f where f.haendler = ''N'' and f.stat <> ''D'' order by 1 asc'; Open; end; while not D_DataModule.DataSet.Eof do begin reg.customer[reg.Ac_ID].ID := D_DataModule.DataSet.FieldByName('FAID').Value; reg.Customer[reg.Ac_ID].Company := D_DataModule.DataSet.FieldByName('UPPER').Value; reg.Customer[reg.Ac_ID].CompanyType := D_DataModule.DataSet.FieldByName('FA_BEZ').Value; D_DataModule.DataSet.Next; ... end; ... D_DataModule.DataSet.Close; |
Re: Daten mit DataSet in Datenbank schreiben
Am besten so :
Delphi-Quellcode:
[/quote]
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. |
Re: Daten mit DataSet in Datenbank schreiben
Zitat:
|
Re: Daten mit DataSet in Datenbank schreiben
Zitat:
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:
Oder alternativ:
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;
Delphi-Quellcode:
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.
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; |
Re: Daten mit DataSet in Datenbank schreiben
Oh je, Chaos-Thread. :mrgreen:
Zitat:
Delphi-Quellcode:
Ist da irgendein Hinweis auf den zu verwendenden Datentyp auf Anhieb und ohne zu testen zu erkennen ? Testen würde in diesem Fall Try and Error bedeuten. :shock:
abc.xy := D_DataModule.DataSet.FieldByName('FAID').Value;
Zitat:
Welche "Funktionen" ? Wieso bringst du ADO unnötig ins Spiel ? Zur Frage an sich : das ganze ist lediglich eine Zuweisung, bei der geklärt sein muss, was rechts und was links steht ( ":=" ). Der Typ rechts und links muss übereinstimmen. Als Zusatzbegründung : dem Value als Variant ist der Typ auch egal. |
Re: Daten mit DataSet in Datenbank schreiben
Zitat:
a) Probier's halt aus. Ich habs ja auch erklärt: Du hängst nichts an sondern überschreibst höchstens. b) Lies doch mal: "select upper(f.fname), ...". Upper ist eine Funktion. c) Warum nicht? Hab ja dazu geschrieben, dass es sein kann, dass man statt TADOQuery was anderes verwenden muss. |
Re: Daten mit DataSet in Datenbank schreiben
Um das nochmal deutlich zu sagen: Der von dir geschriebene Quelltext ist absolut laufunfähig. Was machst du da eigentlich???
Erklär ihn mal bevor du weiter fragst, warum ich glaube dass er nicht lauffähig ist. da ist jede zeile unlogisch... Zitat:
|
Re: Daten mit DataSet in Datenbank schreiben
Zitat:
Delphi-Quellcode:
schon eine Fehlermeldung präsentieren. Außerdem gibt es noch FieldByName <F1>. :zwinker:
D_DataModule.DataSet.FieldByName('FAID').AsInteger;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz