Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datasource zur Laufzeit entfernen (https://www.delphipraxis.net/8569-datasource-zur-laufzeit-entfernen.html)

barnti 8. Sep 2003 11:27


Datasource zur Laufzeit entfernen
 
Hallo,

ich habe ein Master-Detail-Formular bei dem ich die Inhalte des DBGrids über eine Query und deren Datasource abfrage. Da die Daten mit der Datasource eingeschränkt sind ich aber auch alle Datensätze ohne Master-Detail-Verknüpfung brauche, würde ich gern die Property "Datasource" meiner Query zur Laufzeit entfernen. Meine Idee war es die Daten auf zwei Formularen anzuzeigen. Beim OnClose-, bzw, OnShow-Event habe ich dann folgende Zuweisungen:

Delphi-Quellcode:
procedure TForm.FormShow(Sender: TObject);
begin
  DMKundenForm.QueryHafenplatz.DataSource:= Nil;
end;

procedure TForm.FormHide(Sender: TObject);
begin
  DMKundenForm.QueryHafenplatz.DataSource:= DMKundenForm.DataSourceKunde;
end;
Wird Formular 'normal' angezeigt, werden die Master-Detail-Daten nicht angezeigt. Wird das Formular geschlossen werden die Master-Detail-Daten aus der Query gelesen.

Das ist die Theorie. Leider funktioniert es nicht. Es werden immer die Master-Detail-Daten angezeigt. Weder ein Close-Open noch ein Refresh tun ihr übriges...

Wo ist der Denkfehler? Wie kann ich zur Laufzeit zwischen Master-Detail-und normalen Daten wechseln?

Gruß,

Barnti

Delphianer 8. Sep 2003 11:49

Re: Datasource zur Laufzeit entfernen
 
Hallo,

bei einer Master-Detail-Verknüpfung mit Queries wird zusätzlich zur Datasource in der Detail-Query auch das SQL-Statement angepaßt.
Üblicherweise in der Form
.. where ID=:ID
Über die Datasource wird in der Mastertabelle nach einem passenden Feld gesucht, anhand dessen die Detaildatensätze gefiltert werden.
Es sollte eigentlich reichen, das SQL-Statement anzupassen, indem die die betreffende Where-Klausel entfernst oder hinzufügst, meiner Ansicht nach kannst Du sogar die Verkmüpfung zur Datasource bestehen lassen.

Viele Grüße

barnti 8. Sep 2003 12:00

Re: Datasource zur Laufzeit entfernen
 
Hallo,

just in diesem Moment fällt es mir wie Schuppen aus den Haaren :P !

So ist es! Das habe ich total verpennt!

Danke und Gruß,

Barnti


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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 by Thomas Breitkreuz