![]() |
Datenbank: Interbase • Zugriff über: DbExpress / ClientDataset
DBEdit Felder auslesen, wieso geht das nicht?
Delphi-Quellcode:
Das Edit Feld DBEdit1 ist mit einem Wert gefüllt. Wie kriege ich diesen zurück?
form1.ClientDataSetName.FieldByName('DB_ID').AsInteger:=strtoint(dbedit1.text);
Dieser Befehl oben liefert "" bzw. 0 obwohl der Wert gefüllt ist. Mache ich das ganze so:
Delphi-Quellcode:
erhalte ich ebenfalls 0 obwohl auf dem aktuellen Datensatz der Wert 52 angezeigt wird..
form1.ClientDataSetName.FieldByName('DB_ID').AsInteger:=form1.ClientDataSetName.FieldByName('DB_ID').AsInteger;
Versteh ich im Moment grad überhaupt nicht mehr... Es geht darum einen Datensatz zu kopieren mit den identischen Werten wie bereits vorhanden. Oder gibt es einen schlaueren Lösungsansatz? |
Re: DBEdit Felder auslesen, wieso geht das nicht?
Guten Morgen,
stand selber mal vor dem selber Problem, habe es allerdings über eine SQL-Query gelösst. Beispiel:
Delphi-Quellcode:
Hoffe ich konnte dir helfern....
procedure KopiereDatensatz();
var Query:TSQLQuery; var iMaxID:Integer; begin Query := TSQLQuery.Create(self); Query.SQLConnection := self.SQLConnection1; Query.Close; Query.SQL.Clear; Query.SQL.Add('select max(id)+1 as MaxxID from Tabelle'); Query.Open; iMaxID := 1; While not Query.Eof do begin iMaxID := query.FieldByName('MaxxID').AsInteger; Query.Next; end; Query.Close; Query.SQL.Clear; Query.SQL.Add('insert into tabelle (id, wert, wert1) values'); query.sql.add('('+IntToStr(iMaxID)+', '''+self.ClientDataSet1.FieldByName('wert').AsString+''', '''+self.ClientDataSet1.FieldByName('wert1').AsString+''')'); Query.ExecSQL(true); Query.Close; self.ClientDataSet1.CancelUpdates; self.ClientDataSet1.Refresh; end; |
Re: DBEdit Felder auslesen, wieso geht das nicht?
Du willst einen Datensatz kopieren?
So etwa:
Delphi-Quellcode:
Die Prozedure fügt den aktuellen Datensatz ans Ende der Datenmenge ein.
Procedure CopyCurrentDataset (MyDataset : TDataset);
Var fFields : Array Of Variant; i : Integer; Begin SetLength (fFields, MyDataset.FieldCount); For i:=0 to MyDataSet.FieldCount - 1 do fFields[i] := MyDataSet.Fields(i).Value; // Alle Feldinhalte merken MyDataset.Append; For i:=0 to MyDataSet.FieldCount - 1 do MyDataSet.Fields(i).Value := fFields[i]; // Feldinhalte wieder zurückschreiben MyDataset.Post; End; Vorsicht bei Blobs (geht das dann?), bei AutoInc- und berechneten Feldern.. Die Sonderbehandlung musst Du noch einbauen (Case FieldType of ....) |
Re: DBEdit Felder auslesen, wieso geht das nicht?
Hai toyoman,
ich glaube da liegt ein Verständnissproblem vor? Die DBxxxx Komponenten dienen nicht nur zur Anzeige von Daten aus dem DataSet. Sobald Du in diesen etwas änderst und ein Post ausgeführt wird (das passiert z.B. schon beim scrollen in einem DBGrid) stehen die Änderungen auch in dem Datensatz der Tabelle. Ausserdem solltest Du vermeiden einen Wert aus einer DBxxxx Komponente zu holen. Lese diesen besser aus dem DataSet. |
Re: DBEdit Felder auslesen, wieso geht das nicht?
Nein nicht noch ein Verständnisproblem am Freitag sharky :)
Ist mir schon alles klar. Ich versuchs grad mal mit der vielversprechenden Funktion von alzaimar und sega84. Danke euch allen erstmal... Zitat:
|
Re: DBEdit Felder auslesen, wieso geht das nicht?
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz