AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Master-Detail-Beziehung zur Laufzeit erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Master-Detail-Beziehung zur Laufzeit erstellen

Ein Thema von barnti · begonnen am 27. Mai 2004 · letzter Beitrag vom 1. Jun 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Master-Detail-Beziehung zur Laufzeit erstellen

  Alt 28. Mai 2004, 09:13
Hallo Sharky,
Zitat von Sharky:
an welcher Stelle setzt Du denn den Wert des Parameters?
Ich erzeuge DBLookupBoxen sobald man eine Tabelle zur Ansicht aufruft. Die LookupBoxen dienen der Suche in der Tabelle. So kann man in der Tabelle 'Waren' nach Waren von bestimmten Kunden suchen, wenn man in der LookupBox 'Kunde' einen Kunden auswählt. In der nächsten Lookupbox sollen dann nur noch Waren des ausgewählten Kunde angezeigt werden.
Die Boxen werden erzeugt sobald der Benutzer auf den 'Tabelle Waren anzeigen'-Button drückt.
Delphi-Quellcode:
...
procedure SetExtraLookup(...)
...// Hier wird jeweils eine Box mit einem Standard-SQL-Statement konfiguriert(alle Daten der
   // Tabelle)
ListField:= GetListFieldLookupBox.ListSource:= GetXLookupDatasource(Tablename);
LookupBox.ListSource.DataSet.Open;
LookupBox.KeyField:= LookupBox.ListSource.DataSet.Fields[0].FieldName;
LookupBox.ListField:= ListField;

SetMasterDetail(LookupBox); // hier soll die Master-Detail-Beziehung etabliert werden
...


procedure SetMasterDetail(LookupBox: TDBLookupComboBox);
begin
...
  // Neu abzufragende Tabelle, Fremdschlüssel und die zugehörige Query
  Tablename:= GetTableName;
  KeyName:= MasterDataset.Fields[0].FieldName;
  DetailQuery:= GetDetailQuery;

  DetailQuery.Datasource:= MasterDatasource // Hier wird die Verbindung beider Quellen hergestellt

  DetailQuery.Close; // Hier wird das Statement neu gesetzt, so dass der
                                // Parameter 'KeyName'
  DetailQuery.SQL.Clear; // ermittelt aus dem Masterdataset eingesetzt wird
  DetailQuery.SQL.Add('SELECT *');
  DetailQuery.SQL.Add('FROM '+TableName);
  DetailQuery.SQL.Add('WHERE '+KeyName+'=:'+KeyName)};
  DetailQuery.SQL.Add('and valid is Null');
  DetailQuery.Open;
end;
Der Wert des Parameters ergibt sich aus der Verbindung der beiden Quellen. Da In der LookupBox 'Kunde' Werte vorhanden sind, scheint die Quelle 'Kunde' offen zu sein. In der Box der Waren werden halt nur keine Waren angezeigt. Das Statement wird aber ausgeführt...
Gruß,

Barnti
  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 19:21 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