AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBEdit Felder auslesen, wieso geht das nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

DBEdit Felder auslesen, wieso geht das nicht?

Ein Thema von toyoman · begonnen am 16. Nov 2007 · letzter Beitrag vom 16. Nov 2007
Antwort Antwort
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#1

DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 08:41
Datenbank: Interbase • Zugriff über: DbExpress / ClientDataset
form1.ClientDataSetName.FieldByName('DB_ID').AsInteger:=strtoint(dbedit1.text); Das Edit Feld DBEdit1 ist mit einem Wert gefüllt. Wie kriege ich diesen zurück?
Dieser Befehl oben liefert "" bzw. 0 obwohl der Wert gefüllt ist.

Mache ich das ganze so:

form1.ClientDataSetName.FieldByName('DB_ID').AsInteger:=form1.ClientDataSetName.FieldByName('DB_ID').AsInteger; erhalte ich ebenfalls 0 obwohl auf dem aktuellen Datensatz der Wert 52 angezeigt wird..

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?
  Mit Zitat antworten Zitat
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#2

Re: DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 08:49
Guten Morgen,
stand selber mal vor dem selber Problem, habe es allerdings über eine SQL-Query gelösst.
Beispiel:
Delphi-Quellcode:
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;
Hoffe ich konnte dir helfern....
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 08:54
Du willst einen Datensatz kopieren?

So etwa:

Delphi-Quellcode:
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;
Die Prozedure fügt den aktuellen Datensatz ans Ende der Datenmenge ein.

Vorsicht bei Blobs (geht das dann?), bei AutoInc- und berechneten Feldern.. Die Sonderbehandlung musst Du noch einbauen (Case FieldType of ....)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 09:05
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 09:19
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 von Sharky:
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.
  Mit Zitat antworten Zitat
shmia

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

Re: DBEdit Felder auslesen, wieso geht das nicht?

  Alt 16. Nov 2007, 10:01
Zitat von alzaimar:
Du willst einen Datensatz kopieren?
So etwa:
Delphi-Quellcode:
Procedure CopyCurrentDataset (MyDataset : TDataset);
...
Begin
  ...
  MyDataset.Post; // <= der Post sollte rausgenommen werden, da man ja noch Daten ändern möchte
End;
In der Code-Library ist ein Betrag, der das noch genauer erklärt:
http://www.delphipraxis.net/internal...ct.php?t=19594
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
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