Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Datensatz wurde von anderem User geändert ?

  Alt 29. Aug 2007, 13:45
Angenommen du hast eine QueryXX mit "SELECT * FROM Tabelle1" und zeigst die Daten in einem DBGrid an.
Dann machst du einen SQL-Update: 'UPDATE Tabelle1 SET Spalte1 = ''Wert'' WHERE Spalte2 = ''Test'''
Und nun möchtest in der QueryXX irgendwelche Daten ändern.
Dann erzeugt die VCL im Hintergrund eine UPDATE-Anweisung nach diesem Schema:
SQL-Code:
UPDATE Tabelle1 SET Spalte1 = @neuerWert1 WHERE Spalte2 = @neuerWert2
WHERE Spalte1=@alterWert1 AND Spalte2=@alterWert2
Da es aber die alten Werte nicht mehr in der Tabelle gibt, liefert die UPDATE-Anweisung
als Ergebnis, dass nichts geändert wurde. (RecordsAffected=0 sollte aber 1 sein)
Somit kommt die VCL zu dem Schluss, dass ein anderer User die Daten geändert hat.
In Wirklichkeit war es dein Programm selber, dass an der QueryXX vorbei geändert hat.
Abhilfe:
Nach deinem SQL-Update entweder QueryXX.Close gefolgt von QueryXX.Open oder nur QueryXX.Refresh (schneller; funkt aber nicht immer) ausführen.
Andreas
  Mit Zitat antworten Zitat