AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankfelder werden in datasource.onchange nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankfelder werden in datasource.onchange nicht gefunden

Ein Thema von buyden · begonnen am 24. Feb 2005 · letzter Beitrag vom 7. Mär 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 24. Feb 2005, 18:28
Huh

so aufwendig hatte ich mir das nicht vorgestellt. ich werd das mal durchdenken und testen und meld mich dann nochmal.

erstmal dank an euch.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 24. Feb 2005, 18:42
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:
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin
  //showmessage(inttostr(frmdata.tbstatus.FieldValues['farbe']));
  //frmmain.Panel1.Color:=frmdata.tbstatus.FieldValues['farbe'];

  if Field.FieldName='Statusthen
   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;
allerdings bekomme ich am Anfang bei
if Field.FieldName='Statusthen ne Zugriffsverletzung.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
shmia

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

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 24. Feb 2005, 19:40
Zitat von buyden:
allerdings bekomme ich am Anfang bei
if Field.FieldName='Statusthen ne Zugriffsverletzung.
Dann muss man noch abfragen, ob Field = nil ist:
Delphi-Quellcode:
if Assigned(Field) then
   if Field.FieldName='Statusthen
.......
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 24. Feb 2005, 21:28
also mit dem code bekomme ich erstmal keine Fehlermeldung,

Delphi-Quellcode:
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin
if Assigned(Field) then
  if Field.FieldName='Statusthen
   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;
allerdings verändert sich bei einer Statusänderung die Panelfarbe auch nicht.
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:
procedure Tfrmmain.edstatuscontrolChange(Sender: TObject);
begin
Panel1.Color:=frmdata.tbstatus.fieldbyname('farbe').AsInteger;
end;
Das Ergebnis war das gleiche wie in dem datasouce.onchangedata - "das feld kann nicht gefunden werden".
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 26. Feb 2005, 11:57
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;
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 28. Feb 2005, 16:29
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#17

Datenbankfelder werden in datasource.onchange nicht gefunden

  Alt 1. Mär 2005, 21:24
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??
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 7. Mär 2005, 15:49
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.



DFN
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:20 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