Einzelnen Beitrag anzeigen

Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: SQL: Update-Befehl löscht Datensatz?

  Alt 23. Jan 2007, 13:54
Hallo,

die Werte werden zwar korrekt abgespeichert, aber die ID wird immernoch um eins erhöht.

Das mit dem Label funktioniert durchaus, weil der ExecSQL-Befehl, der die ID (leider) ändert, erst nach dem Zusammenstellen des SQL-Strings erfolgt. Im Formular gibt es keine datensensitiven Komponenten mehr, das einzige TTable-Element, das auf diese Tabelle verweist, ist nicht aktiv.

Beispiel:

Delphi-Quellcode:
      if dmGeneral.tblSD_Cust.Active then
        dmGeneral.tblSD_Cust.Close;
      with dmQueries.qryUpdate do begin
        SQL.Text := 'UPDATE SD_CUST SET ' +
                    'STRSHORTNAME = ' + QuotedStr(edtShortName.Text) + ', ' +
                    'STRNAME1 = '     + QuotedStr(edtName1.Text) + ' ' +
                    'WHERE ID = ' + lblID.Caption + ';';
        try
          showmessage(SQL.Text);
          ExecSQL;
        except
          On E:Exception do begin
            strMsg := 'Fehler bei Aktualisieren Datensatz, Meldung: ' + E.Message;
            Beep;
            MessageDlg(strMsg, mtError, [mbOK], 0);
            Exit;
          end;
        end;
      end;
Wenn die aktuelle Datensatz-ID z. B. 122 ist, zeigt der Showmessage-Befehl "...WHERE ID = 122;", was ja korrekt ist.
Wenn ich nach dem ExecSQL in die Tabelle schaue, steht im Feld ID des gleichen Datensatzes (es wird kein neuer angefügt) eine 123 drin....und ich habe keine Ahnung, wieso

Edit: Hab jetzt mal ein kleines Testprojekt angelegt, dass genau das gleiche tut und siehe da, das Feld "ID" wird nicht verändert, also muss noch irgendwo im Programm der Wurm sein, aber wenn ich mit F7 durchgehe, kommt nach dem ExecSQL direkt die nächste Anweisung, aber da ist der Wert schon verändert...



Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat