![]() |
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)? |
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 |
Re: Datenerfassung mit Firebird Datenbank
Zitat:
Zitat:
|
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.
|
Re: Datenerfassung mit Firebird Datenbank
Zitat:
Sehe schon, hab' bisher doch ziemlich umständlich gearbeitet. (Funktioniert hat es aber ;) ) |
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; |
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 |
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: |
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:
Da ich aber ja in meiner Query Komponente den SQL String festgelegt habe...
{Datenbankverbindung aufbauen über ZConnection (ZEOS)}
ConMB256PLUS.Connect; QryMB256PLUS.Open;
SQL-Code:
kommt es ja logischer Weise zu meinem bekannten Fehler.
INSERT INTO MB256PLUS'("LfdNr", "Datum", "Uhrzeit", "Ereignis", "Teilnehmer", "Bereich")
VALUES(:LfdNr,:Datum,:Uhrzeit,:Ereignis,:Teilnehmer,:Bereich)'; Daraus folgere ich, das ich entweder die Datenansicht anders realisieren muss oder der Open Befehl anders eingesetzt werden muss. |
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 13:03 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