Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid- und TLabel-Anzeige nicht identisch (https://www.delphipraxis.net/66446-dbgrid-und-tlabel-anzeige-nicht-identisch.html)

LOMBI 31. Mär 2006 07:03

Re: DBGrid- und TLabel-Anzeige nicht identisch
 
Guten Morgen,

habe das schon wie von marabu empfohlen auf OnAfterScroll geändert.
Aber was ist mit meinen Codes Insert,Edit,Speichern von gestern?
Da scheint etwas nicht in Ordnung zu sein.

Gruß
Lombi

mkinzler 31. Mär 2006 07:13

Re: DBGrid- und TLabel-Anzeige nicht identisch
 
Ich vermut mal, das hier der Fehler liegt, da hier was zu fehlen scheint:

Du versuchst in .BtnSpeichernClick was in die Datenbank zurückzuschhreiben hat aber in Table1AfterScroll nur die Werte des aktuellen DS in die Editfelder kopiert. Wenn du nun Änderungen zurückschreiben willst, mußt du zuerst die werte der Edits wieder in das DS zurückschreiben.

marabu 31. Mär 2006 10:33

Re: DBGrid- und TLabel-Anzeige nicht identisch
 
Hallo Lombi.

Ich vermute FAdrListe ist die Form mit der mittels DBGrid realisierten Listenansicht und FAdr ist die Form mit den Detailinformationen zu einem Datensatz. Vermutlich hast du das DBGrid auf ReadOnly gesetzt, um den Datensatz auf deine Weise bearbeiten zu können. Du benutzt das DBGrid dann nur zum verschieben des Satzzeigers. Für das Einfügen eines neuen Datensatzes hast du einen Button, wie für das Speichern.

Das Ändern eines Datensatzes über das klicken in eine Zelle zu beginnen halte ich für keine gute Idee. Ich verwende dazu oft ein Kontextmenü. In deiner Detailform könntest du eine Methode zum Bearbeiten des aktuellen Datensatzes bereit halten:

Delphi-Quellcode:
function TFAdr.UpdateRecord(ds: TDataSet): Boolean;
begin
  CBAnrede.Text := ds['Anrede'];
  EditName.Text := ds['Name'];
  Result := ShowModal = mrOK;
  if Result then
  begin
    ds.Edit;
    ds['Anrede'] := CBAnrede.Text;
    ds['Name'] := EditName.Text;
    ds.Post;
  end;
end;
Wenn du dann eine EditAction auf deiner Listenform hast, dann würde folgendes funktionieren:

Delphi-Quellcode:
procedure TFadrListe.EditAction(Sender: TObject);
begin
  with TFadr.Create(nil) do
    if UpdateRecord(TableAdr) then
      TableAdr.Refresh;
end;
Getippt und nicht getestet.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.
Seite 2 von 2     12   

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