Re: Firebird in Netzwerk
So ich habe letzte Nacht 2 Stunden geschlafen um dan festzustellen, daß wir das Thema verfehlen. Es ist nicht nur das Update sonderen auch ein SQLQuery 'Insert into' geht ja auch nicht.
Delphi-Quellcode:
ich mache noch nicht mal ein Commit. Er bleibt schon bei ExecQuery hängen
werte := '0, '+#39+KuNr+#39+', '+#39+inttostr(AnNr)+#39+', '+#39+DateToStr(DateTimePicker1.Date)+#39+', '+#39+Edit1.Text+#39+', '+#39+JvMemo1.Lines.Text+#39+', '+#39+'Text'+#39+', '+#39+'Text'+#39;
sql := 'Insert into ANGEBOT (STATE, KNR, ANR, DATUM, LDATUM, KTEXT, TEXT1, TEXT2) VALUES ('+Werte+') '; DM.sSQL(sql);
Delphi-Quellcode:
procedure TDM.sSql(Sql : String);
begin IBSQL1.SQL.Clear; IBSQL1.SQL.Text := Sql; IBSQL1.ExecQuery; end; |
Re: Firebird in Netzwerk
Es ist aber toll, das du die Tipps hier komplett ignorierst!
|
Re: Firebird in Netzwerk
Nein bitte nicht falsch verstehen ich habe alles auf IBDataSet umgestellt aber ich bekomme auch da das gleiche Problem und zusätzlich bekomme ich über meinen 'insert into' keinen Datensatz eingefügt. Ich habe in den Tabellen einen Generator auf ID und der scheint das nicht zu machen da ich die meldung bekomme ID muss einen Wert haben.
Einfügen mit IBDataSet:
Delphi-Quellcode:
werte := #39+''+#39+', '+#39+inttostr(ReNr)+#39+', '+#39+DateToStr(DateTimePicker1.Date)+#39+', '+#39+DateToStr(DateTimePicker2.Date)+'/'+#39+', '+#39+JvMemo1.Lines.Text+#39+', '+#39+'Text'+#39+', '+#39+'Text'+#39+', '+#39+'0'+#39+', '+#39+'0'+#39; sql1 := 'Insert into RECHNUNG (KNR, RNR, DATUM, LDATUM, KTEXT, TEXT1, TEXT2, ZSKONTO, PSKONTO) VALUES ('+Werte+') '; DM.IBDataSet1.Close; DM.IBDataSet1.InsertSQL.Clear; DM.IBDataSet1.InsertSQL.ADD(SQL1); DM.IBDataSet1.Open; DM.IBDataSet1.Insert; DM.IBDataSet1.Post; |
Re: Firebird in Netzwerk
Der erste Tipp war Parameter zu verwenden. Der 2. wäre sich mit dem DataSet etwas auseinander zusetzten.
Fülle dort SelectSQL mit der Select-Abfrage aus. Nun die entsprechenden DML-Skripte ( Insert, Update, Delete). Nun verhält sich das DS wie eine Table. |
Re: Firebird in Netzwerk
Entschuldige, mit den Parametern habe ich mich noch nicht so beschäfitgt, aber ich weiß wie es geht. Wo finde ich den was über IBDataSet?
|
Re: Firebird in Netzwerk
|
Re: Firebird in Netzwerk
Hallo,
geh mal anders ran. Starte dein Programm, danach IBExpert(z.B. die kostenlose personal). Verbinde dich zur DB, mache ein Select. Wenn das geht, liegt es an deinem Programm (oder den Zugriffsmethoden). Und dann kann man weiterreden. Noch zu den Transaktionen: write consistency Das ist doch nicht alles, oder ? Was ist mit WAIT / NOWAIT ? Woher weisst du eigentlich, dass er beim Insert hängt, hast du das mit dem Debugger geprüft ? Heiko |
Re: Firebird in Netzwerk
ich habe das mit IBExpert gemacht. wenn IBExpert lauft kann ich mit meinem Progamm alles machen. jetzt bin ich am lesen mit IBDataSet.
Ich habe eine Procedur für das Ausführen des Insert. beim eintritt alles o.k. aber er kehrt nicht zurück. erst wenn ich das 2. Programm schließe habe ich wieder zugriff. |
Re: Firebird in Netzwerk
Hallo,
Zitat:
(ohne Commit). Es sieht so aus, als ob die Transaction wait eingestellt hast. Da sieht man wieder, wie blöd das mit dem AutoCommit ist. Schreib mal vor dem Insert ein Transaction.StartTransaction (?) und nach dem Insert explizit ein Transaction.Commit (nicht CommitRetaining. Hast du auch ein TDBGrid mit dranhängen ? Dann nehme für den DB-Code eine eigene Query/DataSet. Heiko |
Re: Firebird in Netzwerk
Ich denke ich habe es so wie du meinst.
für alle Inserts und updats habe ich IBSQL, IBTable(jetzt auch IBDataSet) und IBQuery habe ich nur für die Anzeige (Listen, DBGrid) es werden über diese keine Updats oder Inserts gemacht. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
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