![]() |
Datenbank: FB 1.5 • Zugriff über: FIBplus
Master/Detail ohne DBGrid ?
Hi,
ich habe hier eine Form, auf der sind zwei DataSets und zwei DBGrids. Wechsele ich in dem einen Grid die Zeile, dann werden im zweiten die entsprechenden Detail Datensätze angezeigt. Die DBGrids dienen aber nur zu Testzwecken, denn die kann ich gar nicht gebrauchen. :mrgreen: Es geht darum, daß die Daten beim Wechseln des Records im ersten Dataset berücksichtigt werden sollen. Hierzu bräuchte ich die entsprechenden Datensätze aus der Detailtabelle. Ich brauche also alle Daten aus der Detailtabelle, die geliefert werden, sofern sich die Zeile in der Mastertabelle ändert. Wie gesagt, es geht mit DBGrids, aber das Ganze soll im Endeffekt in ein TChart. |
Re: Master/Detail ohne DBGrid ?
Hai Hansa,
ich würde einfach im ![]() Keine Ahnung ob das beides Querys oder so sind (ich kenne die FIBPlus nicht). Mit einfachen Querys würde das bei mir so aussehen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin with Query_Detail do begin Close; SQL.Text := 'SELECT * FROM detailtable WHERE fk_master = :id_master'; ParamCheck := True; end; with Query_Master do begin Close; SQL.Text := 'SELECT * FROM mastertable'; Open; end; end; procedure TForm1.Query_MasterAfterScroll(DataSet: TDataSet); begin Query_Detail.Parameters[0].Value := DataSet.FieldByName('master_id').AsInteger; Query_Detail.Open; end; |
Re: Master/Detail ohne DBGrid ?
Einen schönen guten Morgen
Alternativ zu Sharky´s Angebot könntest Du auch d as OnChange-Ereignis der DataSource verwenden- Grüße aus dem verschneiten Norden // Martin [Edit] PS: Das OnChange der DataSource is tunabhängig von der Zugriffskomponente was ich als Vorteil sehe. [/Edit] |
Re: Master/Detail ohne DBGrid ?
Ich selbst nutze auch immer das OnAfterScroll Ereignis. Klappt genau nach meinen Vorstellungen.
Allerdings meine ich dass das OnAfterScroll bei den ADO Komponenten ein etwas anderes Verhalten mitbringt. Kann es sein, dass das Ereignis beim Öffnen der Mastertabelle dort nicht ausgelöst wird, sondern wenn die Datenmenge keine Records liefert. Das war bei mir ganz schön ärgerlich, da die vorherigen Detaildaten dann stehen blieben, statt diese dann auch neu zu öffnen und eben keine Records zurückzugeben. Bei der alten BDE ist das jedenfalls anders... Kann das einer bestätigen? |
Re: Master/Detail ohne DBGrid ?
|
Re: Master/Detail ohne DBGrid ?
Thx @All. Habe es mal so ähnlich gemacht wie Sharky, also Parameter und Detail-Dataset im Afterscroll. Das OnDataChange läuft prinzipiell so ähnlich. Bei mir gabs nur folgenden Effekt : nach dem connecten wurde das OnDataChange ca. 50mal aufgerufen und blieb trotzdem immer auf dem selben Datensatz stehen. Da war kein Zusammenhang mit Datenmenge usw. zu erkennen. @Martin : schreibe mal bei Dir eine Showmessage da rein, nicht das da eine kleine Bremse eingebaut ist und du sie nicht mal siehst. Aber egal wie, parallel zu den beiden DBgrids ist jetzt noch ein Stringgrid da und das läuft schön synchron mit dem DBGrid. Das Prinzip wie ichs jetzt gemacht habe scheint also zu gehen. Jetzt muß ich das Ganze nur noch dem TChart beibringen. 8) So, jetzt muß ich mir mal noch den Link von Alex genauer ansehen. Wenn die so viel zu einem Thema schreiben, dann lohnt sich bestimmt, das zu lesen. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 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