![]() |
Datenbank: Paradox7 • Zugriff über: TTable
DBGrid- und TLabel-Anzeige nicht identisch
Hi,
mit folgendem Code möchte ich die gespeicherten Daten in TLabels anzeigen:
Delphi-Quellcode:
Problem:
procedure TDemoForm.DBGridDemoDrawColumnCell (Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState;) begin LabelTel.Caption := FAdr.EditTel.Text; LabelFax.Caption := FAdr.EditFax.Text; LabelMob.Caption := FAdr.EditMob.Text; ... end; Die Anzeige der Labels paßt nicht zu der aktuell markierten Adresse im DBGrid. Es werden die Daten des vorherigen Datensatzes gezeigt. Wer hilft mir bitte? Vielen Dank schon mal! Gruß Lombi |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Hallo Lombi,
die Ausgangskomponenten auf deiner Form FAdr enthalten wahrscheinlich noch nicht die richtigen Daten. Übrigens würde ich die Anzeigewerte immer direkt aus dem DataSet holen. Das passende Ereignis wäre TTable.OnAfterScroll() und nicht DbGrid.OnDrawColumnCell(). Grüße vom marabu |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Guten Morgen marabu,
leider auch mit OnAfterScroll keine Veränderung. Bei den Adressen sind die korrekten Tel./Fax-Nummern gespeichert. Also, wenn im DBGrid zwei Adressen stehen, dann werden dazu die passenden Tel./Fax- Nummern vertauscht in den Labels ausgegeben. AdrA erhält die Nummern von AdrB. Grüße Lombi |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Morgen Lombi,
du holst die werte aber aus irgend welchen Editfeldern und nicht aus dem DataSet (wie dir marabu vorgeschlagen hat). Anhand des wenigen Codes, den du uns gezeigt hast, kann man nicht abschätzen, ob und wie die Editfelder über den aktuellen Datensatnd bzw. ob die Vertauschung in dieser Zuweisung entstanden ist. Am Besten ist die Labelbeschriftung aus dem DataSet ( TTable, TQuery) zu setzen. |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Wenn du nur die identischen Werte wie im Grid als Label anzeigen willst, dann nimm doch einfach ein DBLabel und häng es an das entsprechende DB-Feld.
|
Re: DBGrid- und TLabel-Anzeige nicht identisch
Jetzt habe ich mich schon ein bisschen an die Flat-TEdits gewöhnt und möchte gerne damit weiterarbeiten, wenn möglich ohne die DB-Komponenten.
Ich denke, dass es eher eine Edit/Post-Sache ist. Könnt Ihr bitte mal nachsehen, wo der Fehler liegt:
Delphi-Quellcode:
Im Forum lese ich häufiger auch "ParamByName". Was hat es damit auf sich?
procedure TFAdrListe.BtnNeuClick(Sender: TObject); //Daten eingeben
begin FAdr.Show; with TableAdr do begin Insert; FieldByName('Anrede').AsString := FAdr.CBAnrede.Text; FieldByName('Name').AsString := FAdr.EditName.Text; FieldByName('Vorname').AsString := FAdr.EditVorname.Text; FieldBaName('Strasse').AsString := FAdr.EditStrasse.Text; ... end; procedure TFAdrListe.DBGridAdrListeCellClick(Column: TColumn); //Daten ändern begin FAdr.Show; with TableAdr do begin Edit; FAdr.CBAnrede.Text := FieldByName('Anrede').AsString; FAdr.EditName.Text := FieldByName('Name').AsString; FAdr.EditVorname.Text := FieldByName('Vorname').AsString; FAdr.EditStrasse.Text := FieldByName('Strasse').AsString; ... end; procedure TFAdr.BtnSpeichernClick(Sender: TObject); //Speichern begin if FAdrListe.DataSourceAdr.DataSet.State=dsEdit then FAdrListe.TableAdr.Post else if FAdrListe.DataSourceAdr.DataSet.State=dsInsert then FAdrListe.TableAdr.Post; FAdrListe.Show; end; Gruß Lombi |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Zitat:
Wenn man öfters die gleichen Abfragen mit verschiedenen Werte durchführt.
SQL-Code:
Dann reicht
select * from tabelle where id = :id;
Delphi-Quellcode:
Query.sql.Text = 'select * from tabelle where id = :id;';
... Query.Close; Query.ParamByName('id').value := 4711; Query.Open; ... Query.Close; Query.ParamByName('id').value := 247; Query.Open; |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Hallo mkinzler,
und was ist Deine Meinung zu meinen Codes? Gruß Lombi |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Meine Antwort bezog sich auf die Frage bezüglich Parameter ( habe meinen letzten Beitrag in diese Richtung abgeändert).
Zitat:
Zu was brauchst du das Edit in der Fkt DBGridAdrListeCellClick? Du liest doch Werte aus der Tabelle aus. |
Re: DBGrid- und TLabel-Anzeige nicht identisch
Zitat:
im DBGrid sichtbaren Datensätze aufgerufen. Richtig: Das Event [TTable].AfterScroll benützen:
Delphi-Quellcode:
procedure TForm1.Table1AfterScroll(Dataset:TDataset);
begin LabelTel.Caption := Dataset.FieldByName('Tel').AsString; ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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