Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird in Netzwerk (https://www.delphipraxis.net/138837-firebird-netzwerk.html)

clock50 19. Aug 2009 06:36

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:
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);
ich mache noch nicht mal ein Commit. Er bleibt schon bei ExecQuery hängen

Delphi-Quellcode:
procedure TDM.sSql(Sql : String);
begin
 IBSQL1.SQL.Clear;
 IBSQL1.SQL.Text := Sql;
 IBSQL1.ExecQuery;
end;

mkinzler 19. Aug 2009 06:39

Re: Firebird in Netzwerk
 
Es ist aber toll, das du die Tipps hier komplett ignorierst!

clock50 19. Aug 2009 06:50

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;

mkinzler 19. Aug 2009 07:03

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.

clock50 19. Aug 2009 07:10

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?

mkinzler 19. Aug 2009 07:13

Re: Firebird in Netzwerk
 
http://www.delphi-treff.de/tutorials...erbase/page/5/

hoika 19. Aug 2009 07:17

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

clock50 19. Aug 2009 09:31

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.

hoika 19. Aug 2009 09:46

Re: Firebird in Netzwerk
 
Hallo,

Zitat:

wenn IBExpert lauft
nicht nur laufen, sondern auch eine deiner Queries absetzen
(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

clock50 19. Aug 2009 10:11

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:

Schreib mal vor dem Insert ein Transaction.StartTransaction (?)
und nach dem Insert explizit ein Transaction.Commit (nicht CommitRetaining.
das habe ich gemacht und dennoch ist es so. er beleibt hängen


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.
Seite 3 von 6     123 45     Letzte »    

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