![]() |
Re: Datenbankfelder werden in datasource.onchange nicht gefu
Huh :shock:
so aufwendig hatte ich mir das nicht vorgestellt. ich werd das mal durchdenken und testen und meld mich dann nochmal. erstmal dank an euch. |
Re: Datenbankfelder werden in datasource.onchange nicht gefu
ich denke so annähernd hab ich verstanden, was du da geschieben hast.
ich hab das jetzt auf mich angepasst und das ganze sieht jetzt so aus:
Delphi-Quellcode:
allerdings bekomme ich am Anfang bei
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin //showmessage(inttostr(frmdata.tbstatus.FieldValues['farbe'])); //frmmain.Panel1.Color:=frmdata.tbstatus.FieldValues['farbe']; if Field.FieldName='Status' then begin Assert(tbstatus.Active); if tbstatus.Locate('status', Field.Value,[]) then begin if tbstatus.FindField('farbe') = nil then ShowMessage('Feld farbe nicht vorhanden!'#13#10+ tbstatus.FieldList.Text); // alle vorhandenen Felder anzeigen // Suche war erfolgreich, also Farbe übernehmen frmmain.Panel1.Color:=tbstatus.FieldByName('farbe').asinteger; end else frmmain.Panel1.Color:=0; end; end;
Delphi-Quellcode:
ne Zugriffsverletzung.
if Field.FieldName='Status' then
|
Re: Datenbankfelder werden in datasource.onchange nicht gefu
Zitat:
Delphi-Quellcode:
if Assigned(Field) then
if Field.FieldName='Status' then ....... |
Re: Datenbankfelder werden in datasource.onchange nicht gefu
also mit dem code bekomme ich erstmal keine Fehlermeldung,
Delphi-Quellcode:
allerdings verändert sich bei einer Statusänderung die Panelfarbe auch nicht.
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin if Assigned(Field) then if Field.FieldName='Status' then begin Assert(tbstatus.Active); if tbstatus.Locate('status', Field.Value,[]) then begin {if tbstatus.FindField('farbe') = nil then ShowMessage('Feld farbe nicht vorhanden!'#13#10+ tbstatus.FieldList.Text); // alle vorhandenen Felder anzeigen // Suche war erfolgreich, also Farbe übernehmen } frmmain.Panel1.Color:=tbstatus.FieldByName('farbe').asinteger; end else frmmain.Panel1.Color:=0; end; end; Ich hab das Ganze jetzt spaßenshalber mal in ner anderen Prozedur versucht. Ich hab ein extra dbedit mit dem Status in der tabelle auftrag verbunden und den folgenden code in dessen onchange-ereignis eingetragen:
Delphi-Quellcode:
Das Ergebnis war das gleiche wie in dem datasouce.onchangedata - "das feld kann nicht gefunden werden".
procedure Tfrmmain.edstatuscontrolChange(Sender: TObject);
begin Panel1.Color:=frmdata.tbstatus.fieldbyname('farbe').AsInteger; end; |
Re: Datenbankfelder werden in datasource.onchange nicht gefu
hat denn jemand ne ahnung, warum der Fehler auch in nem ttable.afterpost-ereignis kommt, da wird ja nun kein field übergeben.
auf andere Felder kann ich in der gleichen Prozedur problemlos zugreifen.
Delphi-Quellcode:
procedure Tfrmdata.tbauftragAfterPost(DataSet: TDataSet);
begin frmmain.statusbar1.panels[0].text:=inttostr(tbauftrag.RecordCount)+ ' Datensätze'; //frmmain.Panel1.Color:=frmdata.tbstatus.fieldbyname('farbe').AsInteger; if frmdata.tbauftrag.FieldByName('abgeschlossen').AsInteger=1 then frmmain.StatusBar2.Panels[0].Text:= 'Abgeschlossener Auftrag' else frmmain.StatusBar2.Panels[0].Text:= 'Offener Auftrag'; end; |
Re: Datenbankfelder werden in datasource.onchange nicht gefu
:hello:
|
Datenbankfelder werden in datasource.onchange nicht gefunden
Hat denn keiner ne Idee, wie ich es sonst umsetzen kann, dass bei einer Änderung des Datensatzpointers die Farbe eines Panels verändert wird, wie sie in der Datenbank festgelegt ist?? :wall:
|
Re: Datenbankfelder werden in datasource.onchange nicht gefu
Hi nochmal,
mittlerweile hab ich das Problem auch selbst gelöst. Offenbar kann man in den Ereignissen einer datasource nur auf die Felder der dazugehörigen Tabelle zugreifen. ich hab das Ganze jetzt über eine OnChange-Prozedur auf einem DBEdit, das mit der Statustabelle verbunden ist, gelöst - funzt genau wie ich das wollte. :coder2: DFN :twisted: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 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