Delphi-PRAXiS
Seite 11 von 12   « Erste     91011 12      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenerfassung mit Firebird Datenbank (https://www.delphipraxis.net/129737-datenerfassung-mit-firebird-datenbank.html)

Satty67 27. Feb 2009 13:37

Re: Datenerfassung mit Firebird Datenbank
 
Wobei ich jetzt schon ein Problem der reinen SQL-Bücher sehe. So eine elegante Variante wie sie gerade mkinzler beschrieben hat, lernt man da nicht. (Oder hab' es gewissenhaft überlesen)

€: Nach ExecSQL fülle ich nur ParamByName neu auf und wieder ExecSQL (ohne SQL-Text zu verändern)?

Jens Hartmann 27. Feb 2009 13:44

Re: Datenerfassung mit Firebird Datenbank
 
Danke erstmal wieder für die schnelle antwort,

Also, wenn ich das verstanden habe, kann ich schon in meiner Query Komponente die Parameters und auch den SQL String setzen.

Jetzt muss ich im eigentlichen Programm nur noch die Werte setzten

mkinzler 27. Feb 2009 13:44

Re: Datenerfassung mit Firebird Datenbank
 
Zitat:

Wobei ich jetzt schon ein Problem der reinen SQL-Bücher sehe. So eine elegante Variante wie sie gerade mkinzler beschrieben hat, lernt man da nicht. (Oder hab' es gewissenhaft überlesen)
Dann ist es ein schlechtes Buch, wenn es keine parametrisierte Abfragen behandelt.
Zitat:

€: Nach ExecSQL fülle ich nur ParamByName neu auf und wieder ExecSQL (ohne SQL-Text zu verändern)?
Vor jedem Aufruf von .ExecSQL()( auch dem ersten)

DeddyH 27. Feb 2009 13:48

Re: Datenerfassung mit Firebird Datenbank
 
Richtig, Du musst nur die Parameter neu befüllen, bevor Du ExecSQL erneut ausführst, das eigentliche SQL bleibt davon unberührt.

Satty67 27. Feb 2009 13:51

Re: Datenerfassung mit Firebird Datenbank
 
Zitat:

Zitat von mkinzler
Dann ist es ein schlechtes Buch, wenn es keine parametrisierte Abfragen behandelt.

Hab es dann wohl überlesen, wenn das so elementar ist.

Sehe schon, hab' bisher doch ziemlich umständlich gearbeitet. (Funktioniert hat es aber ;) )

Jens Hartmann 27. Feb 2009 14:19

Re: Datenerfassung mit Firebird Datenbank
 
So habe das jetzt mal so gemacht, er trägt auch Daten ein, bring mir nur wieder die Fehlermeldeung

Cannot retrieve Resultset Data

Ich habe das jetzt so integriiert..

Delphi-Quellcode:
{Neue Daten in Datenbank einfügen}
procedure TForm1.BTDatenbankClick(Sender: TObject);
begin
  QryMB256PLUS.Close;
  QryMB256PLUS.SQL.Text := 'INSERT INTO MB256PLUS ("LfdNr", "Datum", "Uhrzeit",'+
      '"Ereignis", "Teilnehmer", "Bereich")'+
      'VALUES(:LfdNr,:Datum,:Uhrzeit,:Ereignis,:Teilnehmer,:Bereich)';

  QryMB256PLUS.ParamByName('LfdNr').AsInteger := 1231;
  QryMB256PLUS.ParamByName('Datum').AsString := '12.12.2009';
  QryMB256PLUS.ParamByName('Uhrzeit').AsString := '12:12:43';
  QryMB256PLUS.ParamByName('Ereignis').AsString := 'Extern Unscharf';
  QryMB256PLUS.ParamByName('Teilnehmer').AsString := 'Schalteinrichtung';
  QryMB256PLUS.ParamByName('Bereich').AsString := 'Verwaltung';
  QryMB256PLUS.ExecSQL;
  ConMB256PLUS.Commit;
  QryMB256PLUS.Open;
end;

mkinzler 27. Feb 2009 14:21

Re: Datenerfassung mit Firebird Datenbank
 
Wie schon öfters erwähnt kein .Open bei DML-Statements ( Insert, Update, Delete)
Du brauchst die Abfrage auch nur einmal zu setzen und nicht für jeden Datensatz

Jens Hartmann 27. Feb 2009 14:26

Re: Datenerfassung mit Firebird Datenbank
 
Das mit der Abfrage ist klar, die kann ich doch auch in der Query direkt eintragen, weil das habe ich so gemacht.

Ich habe das lediglich gerade zum test gemacht.

Das mit dem open war mir schon wieder entgangen.

Funktioniert jetzt...... :wall:

Jens Hartmann 27. Feb 2009 14:43

Re: Datenerfassung mit Firebird Datenbank
 
Ich muss nochmal nerven,

Ich habe das ganze jetzt mit dem Open und den ExecSQL mal so überlegt, um es zu verstehen, ich habe jetzt eine Unstimmigkeit in meinem Verständnis.

Beim Starten von meinem Programm, möchte ich ja das meine Daten von meiner Datenbank angzeigt werden. Also habe ich in die OnCreate von meinem Hauptformular folgende Anweisung geschrieben...
Delphi-Quellcode:
  {Datenbankverbindung aufbauen über ZConnection (ZEOS)}
  ConMB256PLUS.Connect;
  QryMB256PLUS.Open;
Da ich aber ja in meiner Query Komponente den SQL String festgelegt habe...
SQL-Code:
INSERT INTO MB256PLUS'("LfdNr", "Datum", "Uhrzeit", "Ereignis", "Teilnehmer", "Bereich")
     VALUES(:LfdNr,:Datum,:Uhrzeit,:Ereignis,:Teilnehmer,:Bereich)';
kommt es ja logischer Weise zu meinem bekannten Fehler.

Daraus folgere ich, das ich entweder die Datenansicht anders realisieren muss oder der Open Befehl anders eingesetzt werden muss.

DeddyH 27. Feb 2009 14:45

Re: Datenerfassung mit Firebird Datenbank
 
Wenn Du den SQL-String unbedingt zur Designtime festlegen willst, dann verwende doch einfach mehrere Queries. Ansonsten nur eine und SQL zur Laufzeit befüllen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.
Seite 11 von 12   « Erste     91011 12      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz