Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz mit ZEOS in Firbird DB speichern (https://www.delphipraxis.net/91009-datensatz-mit-zeos-firbird-db-speichern.html)

DelphiManiac 27. Apr 2007 12:33

Datenbank: Firebird • Version: 2.0 • Zugriff über: ZEOS Lib

Datensatz mit ZEOS in Firbird DB speichern
 
Hallo,

ich habe eine Frage an die Community:

Bin dabei ein Eingabeformular für Mandanten zu entwickeln,

also mehrer DBedits wo die Daten eingegeben werden.

Jetzt wollte ich fragen, wie ich beim abspeichern eines Mandanten-Datensatzes am Besten vorgehe?

Also ich habe ein Connection Objekt
und meine DBEdits,

sollte ich jetzt eine Query nehmen, und den SQL eine Insert-Anweisung verpassen?

Gruß
DelphiManiac

mkinzler 27. Apr 2007 12:34

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Oder du Verwendest ein Updateobjekt

DelphiManiac 27. Apr 2007 12:43

Re: Datensatz mit ZEOS in Firbird DB speichern
 
@mkinzler:

du bist ja echt aktiv heute :-)))

aber ein Update-Objekt alleine reicht doch nicht, ich muss doch dazu ein Query-Objekt haben oder?
Achso habe auch noch eine recht einfach für dich (aber für mich z.Z. noch Neuland) zu beantwortende Frage.
Bei dem Insert:

SQL-Code:
INSERT INTO tblMandanten
  (tblMandanten.MANDANTEN_ID, tblMandanten.ANREDE,
tblMandanten.VORNAME,
   tblMandanten.NAME, tblMandanten.FIRMA, tblMandanten.GEBTAG)
VALUES
  (:MANDANTEN_ID, :ANREDE, :VORNAME, :NAME, :FIRMA, :GEBTAG)
Worauf bezieht sich der Doppelpunkt?

mkinzler 27. Apr 2007 12:50

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Zitat:

aber ein Update-Objekt alleine reicht doch nicht, ich muss doch dazu ein Query-Objekt haben oder?
Ja
Zitat:

Worauf bezieht sich der Doppelpunkt?
das sind Parameter, welche man mit
Delphi-Quellcode:
<DataSet>.ParamByName('<Parametername>').Value
bzw .as<Typ> Abfragen/Setzen kann.
Bsp
Delphi-Quellcode:
Query.ParamByName('NAME').Value := 'Maier';

DelphiManiac 27. Apr 2007 13:14

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Also die Funktionsweise muss ich mir nochmal genauer durch den Kopf gehen lassen:

Ok im Dataset (kann ein TZQuery sein) kann man sich die Daten lokal von der DB holen;
Die Query kann man mit einem TZUpdateObjekt verknüpfen, welches die INSERT / UPDATE /..
Statements beinhaltet.

Gut angenommen ich hole mir über ein Query Daten (SELECT * FROM XXX)
dann habe ich die daten lokal und kann die Parameter ändern (wie du eben beschrieben hast),
wenn ich nun ein Update fahre, dann bedeutet :PARAMETER dass er den Wert im Dataset der unter Parameter steht
in das SQL Statement einfügt und dieses dann updatet.

Hoffentlich hab ich das soweit richtig kapiert, wenn nicht bitte korrigieren,

Wenn ich jetzt aber nur ein INSERT mit meine Tabelle machen will, dann habe ich ja in meinem Query (Datensatz) keine
Daten, also kann ich ja das
Delphi-Quellcode:
<DataSet>.ParamByName('<Parametername>').Value
nicht nutzen,

sollte ich dann so vorgehen?

SQL-Code:
INSERT INTO tblMandanten
  (tblMandanten.MANDANTEN_ID, tblMandanten.ANREDE,
tblMandanten.VORNAME,
   tblMandanten.NAME, tblMandanten.FIRMA, tblMandanten.GEBTAG)
VALUES
  (dbeditMANDANTEN_ID.Text, dbeditANREDE.Text, ...)
??

mkinzler 27. Apr 2007 13:21

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Wenn das Insert-Staement im Query steht kannst du die Parameter manuell setzten und den Query per .ExecSQL ausführen.
Bei der Verwendung eines Updateobjektes ist das nicht nötig, da die Parameter ja automatisch gesetzt werden.
In deisem Fall werden dann die Werte der edits bei Query.Insert in die Parameter geschrieben.

trashcandesign 27. Apr 2007 13:24

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Das kannst du entweder somachen, oder wenn du schon die Zeos benutzt so
Delphi-Quellcode:
TZQuery.Insert;
  TZQuery.FieldByName(FeldName).Value := Wert;
  [...]
TZQuery.Post;
Edit: Werden die Werte bei einem DBEdit nicht automatisch gespeichert wenn er das Feld ändert/verlässt?

DelphiManiac 27. Apr 2007 14:39

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Wie muss ich dann meine Query aufbauen.

Muss ich ersteimal ein
SQL-Code:
SELECT * FROM Tabelle
machen,
und dann auf das Query ein Update-Objekt setzten, welches mir die Datenmenge ändern kann?
Weil eigentlich brauche ich gar keine Daten (im 1. Schritt) ich will ja nur einen "Neuen Mandanten" anlegen,
sollte ich mein Dataset trotzdem füllen (ist das sinnvoll)

Danke euch

mkinzler 27. Apr 2007 16:33

Re: Datensatz mit ZEOS in Firbird DB speichern
 
Du kannst auch
SQL-Code:
SELECT * FROM Tabelle where 1=0
als Abfrage verwenden, dann wird nichts gelesen

DelphiManiac 30. Apr 2007 21:46

Re: Datensatz mit ZEOS in Firbird DB speichern
 
@mkinzer:


Danke euch, genau so klappts, :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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-2025 by Thomas Breitkreuz