AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Master/Detail ohne DBGrid ?
Thema durchsuchen
Ansicht
Themen-Optionen

Master/Detail ohne DBGrid ?

Ein Thema von Hansa · begonnen am 17. Dez 2005 · letzter Beitrag vom 17. Dez 2005
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 03:31
Datenbank: FB 1.5 • Zugriff über: FIBplus
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.

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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 07:13
Hai Hansa,

ich würde einfach im Delphi-Referenz durchsuchenAfterScroll deines ersten DataSets einen neuen Filter/Abfrage für das zweite DataSet aufbauen.
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#3

Re: Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 09:25
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]
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 10:25
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?
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 10:39
oder guckst du hier:
Devrace
alex
Alexander
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Master/Detail ohne DBGrid ?

  Alt 17. Dez 2005, 22:35
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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:12 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