Entwickler-Ecke
Datenbanken - [firebird] INSERT von Datum schlägt fehl :(
jo-freaky - Di 27.06.06 17:45
Titel: [firebird] INSERT von Datum schlägt fehl :(
Hi,
habe mal wieder ein kleines Problemchen:
DB: Firebird Embedded 1.5
Ich will ein Datum in eine Tabelle einfügen und dachte mir das ungefähr so:
Insert into TABLE (DATUM) VALUES (12.12.2001); // In IBExpert funktioniert's
das hat leider nicht funktioniert, hab' auch schon Insert into TABLE (DATUM) VALUES (12.12.2001 AS DATE); versucht - fehlanzeige.
Danke im Vorraus!
Gruß
Johannes
mkinzler - Di 27.06.06 17:52
Ich kann mir nicht vorstellen, das es ohen Quotes funktioniert.
SQL-Anweisung
1:
| Insert into TABLE (DATUM) VALUES ('12.12.2001'); |
jo-freaky - Di 27.06.06 19:17
Mhrm das hatte ich auch schon alle versucht, dann müsste das ja so aussehen oder?
Delphi-Quelltext
1:
| ReCreateQ.SQL.Add('INSERT INTO RECHNUNGEN (REDAT) Values ('12.12.2001')'); |
dann muckt allerdings der compiler:
Operator oder Semikolon fehlt.
Gruß
Johannes
matze - Di 27.06.06 19:34
du musst das auch dementsprechend formatieren:
Delphi-Quelltext
1: 2: 3: 4:
| function DateTimetoSQL(DateTime:TDateTime):string; begin result := formatdatetime('yyyy-mm-dd hh:nn:ss',DateTime); end; |
und wenn du IN einem String ein einfaches Anführungszeichen haben willst musst du es verdoppeln: ''
jasocul - Di 27.06.06 19:38
Delphi-Quelltext
1:
| ReCreateQ.SQL.Add('INSERT INTO RECHNUNGEN (REDAT) Values (' + QuotedStr('12.12.2001') + ')'); |
Eine andere Möglichkeit wäre die Nutzung von Parametern.
jo-freaky - Di 27.06.06 20:04
Ich hab's jetzt mal so gemacht wie jascoul:
Delphi-Quelltext
1:
| ReCreateQ.SQL.Add('INSERT INTO RECHNUNGEN (KDNR,REDAT) Values ('+QuotedStr('424')+',' + QuotedStr('12.12.2001') + ');'); |
Der Compiler meckert nichtmehr jedoch kriege ich jetzt folgende Exception:
Exception der Klasse EZSQLException, 'Cannot retrieve Resultset data'.
Verwendete Komponenten: ZeosLib
Thx
Gruß
Johannes
mkinzler - Di 27.06.06 20:22
Hast du Query.Open; gemacht? Ein Insert liefert keinen ResultSet. Du mußt query.ExecSQL; ausführen
jo-freaky - Di 27.06.06 20:43
Vielen Dank!
Genau das wars!
Wo kann ich den Unterschied zwischen .Open und ExecSQL nachlesen?
Gruß
Johannes
mkinzler - Di 27.06.06 20:47
.Open wird nur bei Select-Statements verwendet; es wird ein Ergebnis zurückgeliefert. .ExecSQL wird für alle Abfrage verwendet, welche kein Ergebnis zurückliefern.
jo-freaky - Di 27.06.06 21:33
Dann lag ich mit meiner Vermutung also richtig.
Vielen Dank für eure prompte kompetente Hilfe!!!!
Gruß
Johannes
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!