Entwickler-Ecke

Datenbanken - Datensätze editieren


Josef-B - Mo 21.07.03 12:23
Titel: Datensätze editieren
Ich möchte Datensätze ändern. Allerdings speichert der Rechner die Änderungen in Interbase nicht ab.

Was ist falsch?

Delphi-Quelltext
1:
2:
3:
4:
procedure Tfauftraegesped.BtnEditClick(Sender: TObject);
begin
....
ibdatasetpositionen.edit;


Dann werden die Feld(er) geändert.

Danach wird gespeichert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure Tfauftraegesped.BtnStoreClick(Sender: TObject);
begin
with ibdatasetpositionen do
  begin
  ID_Auftragspos := (strtoint(dbedit1.Text)*100) + strtoint(dbedit5.text);
  fieldbyname ('Id_Auftrags_Position').value := Id_Auftragspos;
  fieldbyname ('Auftragsnummer').value :=strtoint(dbedit1.text);
  fieldbyname ('Positionsnummer').value := strtoint(dbedit5.text);
  fieldbyname ('Lade_Name_1').value := dbedit6.text;
  post;
  Transaction.CommitRetaining;
  end;
end;


Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


UGrohne - Mo 21.07.03 14:52

Hmm, kann Dir da im Moment net viel helfen, hab in Deinem anderen Thread ja geschrieben, wofür die Datasets eigentlich sind. Ich würde Dir deshalb empfehlen, Deine INSERT-Anweisung wieder herzunehmen, eine IBSQL-Kompo zu nehmen und solche Exec-SQL-Sachen damit zu machen... damit fahr ich bisher gut :wink:


Josef-B - Mo 28.07.03 20:59

Also ich hab jetzt nochmal an meinen IBDATASETS rumgedoktert.

Das Speichern mit Fieldbyname ('irgendwas') := dbeditsonstwas.text funktioniert jetzt einwandfrei.

Man braucht dazu keine anderen Komponenten wie IBQuery oder IBSQL.

Ich hatte in Interbase einige Felder der Tabelle geändert und dann den Dataset-Editor nicht noch mal geändert. Es ist wichtig, dass man bei Änderungen an der Tabelle im Dataset-Editor alle Felder noch mal lädt und auch im Feld-Editor die geänderten Felder erst rauslöscht und dann noch mal wieder einfügt. Genauso müssen die SQL-Anweisungen dann noch aktualisiert werden.

Dann klappts auch einwandfrei.