| Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 05.03.03 13:03
Was ist denn hier verkehrt ?
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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 05.03.03 13:24
Datum ist in der DB vom Typ DATE und Zeit vom Typ Time.
_________________ Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 05.03.03 18:32
scheint ja keinen zu interessieren.  Ich kriege jetzt was in die DB rein. Wenn kein "DS.insert" gemacht wird gehts halt nicht.  Aber das Problem hat sich etwas verlagert :
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
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: 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:
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:
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  )
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: 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 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 06.03.03 13:32
habs jetzt selber hingekriegt :
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 ?
@Kiwicht : Feldname und Feldinhalt werden aus einer Textdatei ermittelt, die eine XML-Sektion hat. 
_________________ Gruß
Hansa
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 06.03.03 16:13
 Jo, sieht sauber aus!
Feldname & Feldinhalt dynamisch aus einer XML-Datei? Hui, das nenn ich fortschrittlich, daran arbeit ich auch grad!
mfg
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 06.03.03 18:14
Das Ding ist tatsächlich fast allgemeingültig. Wie ich soeben erfahren habe, nennt man das "Parser".  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".  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
|
|
|