Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.03.03 13:03 
Was ist denn hier verkehrt ? 8)
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
         DS.Active := false;
         inssql := 'INSERT INTO DS (DATUM,ZEIT) VALUES (''13.05.2003'',''22:59:58'')';
showmessage ('*'+InsSQL+'*');
          DS.InsertSQL.Text := InsSQL;
          DS.Active := true;
  ...
  TransAction.Commit;
  DataBase.Close;
end;


Schreibe ich das, was in InsSQL steht in IBconsole rein, sind Daten in der DB drin, mit dem Programm hier nicht :!: Fehlermeldung kommt aber keine. Wahrscheinlich ist es nur ein dummer Fehler, aber wie soll ich den finden, wenn nicht mal eine Fehlermeldung kommt ?

_________________
Gruß
Hansa
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.03.03 13:24 
Datum ist in der DB vom Typ DATE und Zeit vom Typ Time.

_________________
Gruß
Hansa
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.03.03 18:32 
scheint ja keinen zu interessieren. :cry: Ich kriege jetzt was in die DB rein. Wenn kein "DS.insert" gemacht wird gehts halt nicht. 8) Aber das Problem hat sich etwas verlagert :

ausblenden Quelltext
1:
inssql := 'INSERT INTO DS (DATUM) VALUES					


Ich muß ca. 10-20 Felder nacheinander mit Werten füllen. Schreibe ich Datum,Zeit usw. direkt in diesen Code, klappt es schon. Das soll aber eine allgemeingültige Prozedur werden, so daß ich die Feldnamen vorher nicht mal wissen kann. Wie gehe ich nun nach dem DS.Insert weiter vor mit UPDATE (SQL) ? Oder soll ich DS.Edit in Delphi hinschreiben, oder DS. Post? Wo soll ich jetzt das ganze hinschreiben ?

_________________
Gruß
Hansa
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 06.03.03 11:28 
moment, noch mal langsam:

Die Datenbank-Felder, die aktualisiert werden sollen, die sind dynamisch?
Oder ist der Inhalt, der geschrieben werden soll dynamisch? Dann verfahre ungefähr so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
vDatum := edDatum.Text; // Soweit ich weiss muss das Datum kein QuotedStr sein, in meinem Prog funzt es jedenfalls so
vZeit := QuotedStr(edZeit.Text); // wie das dann mit Zeit und QuotedStr ist, weiß ich nicht, probier am Besten mal mit und mal ohne
vText := QuotedStr(edText.Text);

('INSERT INTO DS (DATUM, ZEIT, TEXT) VALUES (' + vDatum);
(',' + vZeit + ',' + vText + ')');

und dann halt ausführen und fertig ist die Wurst ;)

Was in meinem Prog immer eine Fehlerquelle war: Falsche Zahlen-, Zeit- und Datumformate.
Also vorher immer auf Nummer sicher gehen, das das richtig läuft, z.B. mit FormatDateTime usw. Auch wenn ich Nullvariablen in Zahlenfelder schreiben wollte, gabs bei mir Exceptions, also regel das vielleicht mit ner If-Abfrage:
ausblenden Quelltext
1:
2:
if vPreis <> '' then Add('UPDATE DS SET preis = ' + QuotedStr(vPreis)');
// schematisch dargestellt, nicht unbedingt Syntax-Konform

(das beantwortet auch deine Frage bezüglich Update, hoff ich :D)
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 06.03.03 13:12 
Hi Hansa,

es bringt nix, wenn Du den Insert-SQL in die Eigenschaft "InsertSQL" einer TIBDataSet schreibst. Diese SQL-Statements (InsertSQL, DeleteSQL,..) werden automatisch vom DataSet ausgeführt, d.h. Du hast da nur wenig Einfluss darauf!

Wenn Du es mit dem Insert machen willst, dann schreib das SQL in das normale SelectSQL rein und führe es dann mit DataSet.ExecSQL; aus!

Grüße
Lemmy
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 06.03.03 13:32 
habs jetzt selber hingekriegt :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 DS.Active := true;
      DS.Insert; // leeren Datensatz erzeugen
      REPEAT
          ...
          DS.FindField(FeldName).Value := FeldInhalt;  // Felder mit Werten besetzen

      UNTIL ...;
      DS.Post;
      DS.Active := false;


Sieht doch sauber aus, oder ? :P

@Kiwicht : Feldname und Feldinhalt werden aus einer Textdatei ermittelt, die eine XML-Sektion hat. :mrgreen:

_________________
Gruß
Hansa
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 06.03.03 16:13 
8) Jo, sieht sauber aus!

Feldname & Feldinhalt dynamisch aus einer XML-Datei? Hui, das nenn ich fortschrittlich, daran arbeit ich auch grad!

mfg
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 06.03.03 18:14 
Das Ding ist tatsächlich fast allgemeingültig. Wie ich soeben erfahren habe, nennt man das "Parser". :shock: Die IB Datei habe ich soeben überprüft, da sind nicht nur strings drin, auch Date, Smallint usw. Also geht auch die Typumwandlung. Aha, laut Wörterbuch heißt das, "grammatikalisch zerlegen". 8) Muß man dann Parser sagen? Unfug, so was. Egal, dann habe ich halt einen Parser geschrieben, immer mal was neues. Zumindest für mich ist der Thread damit erledigt.

_________________
Gruß
Hansa