Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Commit geht nicht (SQL) (https://www.delphipraxis.net/7805-commit-geht-nicht-sql.html)

Hansa 21. Aug 2003 21:40

Re: Commit geht nicht (SQL)
 
Nein, das ist ja der Witz. :spin:

kiar 21. Aug 2003 21:45

Re: Commit geht nicht (SQL)
 
und du startest die transaction im beforinsert -event?

Hansa 21. Aug 2003 21:47

Re: Commit geht nicht (SQL)
 
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  i := 1;
  StringGrid1.fixedColor := clBtnFace +10;
  StringGrid1.Col := i;
(*
if StringGrid1.Options = goFixedVertLine then
StringGrid1.GridLineWidth := 0;
*)
  StringGrid1.Cells [0,1] := IntToStr (i)+'.';
  StringGrid1.Cells [1,0] := 'Art.Nr.';
  StringGrid1.Cells [2,0] := 'Art.Bez.';
  ...
  RecDataMod.Transaction.StartTransaction;
  LabeledEdit1.SetFocus;
end;

kiar 21. Aug 2003 21:52

Re: Commit geht nicht (SQL)
 
hansa ist ja gut :oops:

transactionen sollten nur so kurz wie möglich offen sein :!:

ich denke wir machen morgen weiter - an der gleichen stelle

mir drehen sich schon die :roteyes:

raik

Hansa 21. Aug 2003 21:56

Re: Commit geht nicht (SQL)
 
tja, wer weiß :?: Formshow -> StartTransaction. FormClose -> Commit. 8)

kiar 22. Aug 2003 09:19

Re: Commit geht nicht (SQL)
 
moin hansa

wollte mal ein prog bauen, leider funktionieren die ressourcen mit ibx icht mehr.

wenn ich heute noch hinkriege werde ich es noch machen

raik

kiar 22. Aug 2003 09:50

Re: Commit geht nicht (SQL)
 
was mir noch aufgefallen ist, das du nicht explizit die dataset bei der transaction angibts:
Delphi-Quellcode:
begin
  CASE MessageDlg('speichern ?',mtInformation,
    [mbYes, mbNo], 0) OF
    mrNo    : recmoddata.TransAction.Rollback;
    mrYes   : recmoddata.TransAction.Commit;
  end;

Hansa 22. Aug 2003 10:18

Re: Commit geht nicht (SQL)
 
Wenn ich so weiter mache, ist das halbe Programm gepostet, aber hier muß der Hund begraben liegen:

Delphi-Quellcode:
LagDS.Close;
LagDS.SelectSQL.Text := 'SELECT * FROM LAGER8 WHERE ID_ART = ';
LagDS.SelectSQL.Text := LagDS.SelectSQL.Text +
                        ArtDS.FieldByName ('ID').AsString;
LagDS.open;
aendern := NOT LagDS.IsEmpty;
LagDS.Close;
LagDS.SelectSQL.Clear;
if not aendern then begin
  LagDS.SelectSQL.Add ('INSERT INTO LAGER8 (ID,MENGE) VALUES (');
  LagDS.SelectSQL.Add (ArtDS.FieldByName ('ID').AsString);
  LagDS.SelectSQL.Add (','+IntToStr (-1*GesMenge)+')');
  LagDS.Open;
end
else begin
  LagDS.SelectSQL.Add ('UPDATE LAGER8 SET MENGE=MENGE-');
  LagDS.SelectSQL.Add (IntToStr (GesMenge));
  LagDS.Open;
end;
Zuerst suche ich einen Artikel. Ist einer da, gehts mit dem Source hier weiter. Ich prüfe ob Lagerdaten dazu exist. und dann wird der Lagerbestand halt aktualisiert. Irgendwas stimmt da nicht. Ich habe das ungute Gefühl, daß ich etwas sehr wichtiges vergessen / falsch gemacht habe, sehe aber nicht was. 8)

urs.liska 22. Aug 2003 10:25

Re: Commit geht nicht (SQL)
 
Hallo Hansa,

ich habe leider nicht die Zeit, mir einen genauen Lösungsvorschlag auszudenken, aber das Problem ist ganz klar:
Du weist die - an sich korrekte - SQL-Anweisung der SelectSQL-Eigenschaft der Dataset zu und öffnest dann die Datenmenge. Das ist aber nicht dafür gedacht. Du musst entweder mit den Insert- oder UpdateSQL-Eigenschaften arbeiten und ExecSQL aufrufen (ich weiß aber nicht genau, ob das einfach so geht oder ob erst DS.Insert->Feldzuweisung->DS.Post machen musst) oder mit TIBSQL arbeiten. Jedenfalls kannst Du mit SelectSQL keine Daten ändern ;-)

Viel Glück
Urs

Hansa 22. Aug 2003 10:36

Re: Commit geht nicht (SQL)
 
Leider bin ich heute echt blind, aber so ganz kann das nicht stimmen. Der Witz ist nämlich, wenn kein Datensatz vorhanden lande ich bei insert. Gebe ich sofort danach nochmal dasselbe ein lande ich bei Update. Gebe ich einen anderen Artikel ein wieder Insert. Also so wie es sein müßte. Aber mir fällt gerade auf, daß ich kein Post verwende. hmmmm.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.
Seite 2 von 5     12 34     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