![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: AnyDAC
AnyDAC mit Master-Detail funkt nicht
Hallo Zusammen,
zunächst einmal frohe Weihnachten an alle Forum User. Ich versuche eine simples Master-Detail zu erzeugen, gelingt mir jedoch nicht. Auf einer Form habe ich als Master ein TADQuery das SQL
Code:
eigegeben. Außer Automatic Incrementing sonst nichts eingestellt!
SELECT PASSEINGAENGEID, PASSEINGANGAM, VEREINID, ABGESCHLOSSEN
FROM PASSEINGAENGE Die DataSource umbenannt in dsPASSEINGAENGE Fürs Detail auf der Form ein weiteres TADQuery mit dem SQL
Code:
Ebenfalls unter Options nur die AutoInc infos eingetragen sonst nichts!
SELECT PASSEINGANGPOSID, PASSEINGAENGEID, PASSNR, VORNAME, NACHNAME
FROM PASSEINGANGPOS Dessen DataSource umbenannt in dsPASSEINGANGPOS In der DetailQuery das Prop. MasterSource=dsPASSEINGAENGE und MasterField=PASSEINGAENGEID Das ist alles. Ich hätte jetzt erwartet dass Master-/Detail bereits funktioniert. Doch das tut es nicht. Weder die Datensätze werden gefiltert, noch wird beim Detail.Append das Feld PASSEINGAENGEID automatisch gesetzt. Hat jemand eine Idee was ich dabei übersehe? Laut Handbuch ist keine weitere Aktion notwendig. Ich habe auch alles gelöscht und neu gemacht, doch ohne Erfolg. Gruß Kostas |
AW: AnyDAC mit Master-Detail funkt nicht
Ich kenne AnyDac nicht aber automatisch gesetzt wird üblicherweise über die IndexFieldNames des Detaildatasets. Ansonsten kannst Du im AfterInsert manuell setzen.
Unabhängig davon, mit ADO geht folgendes um nicht alles immer zu ziehen un zu filtern, k.A. ob das bei AnyDac auch geht:
Code:
SELECT PASSEINGANGPOSID, PASSEINGAENGEID, PASSNR, VORNAME, NACHNAME
FROM PASSEINGANGPOS where PASSEINGAENGEID=:PASSEINGAENGEID |
AW: AnyDAC mit Master-Detail funkt nicht
Hallo,
das ist die Variante über Parameter die einwandfrei funktioniert. Im Handbuch ist eine weiter Methode "Range based M/D" beschrieben die allerdings nicht funktioniert bzw. ich etwas übersehe. Im Handbuch steht: Range based M/D To setup the range based M/D relationship, perform the following steps: 1. Drop TADQuery ( see page 468) (or any other AnyDAC dataset) on a form. Name it qOrders. Setup it - lets assign the SQL ( see page 490): SELECT * FROM {id Orders} 2. Drop TDataSource on a form. Name it dsOrders. Set it DataSet to qOrders. 3. Drop TADQuery ( see page 468) on a form. Name it qOrderDetails. Setup it - lets assign the SQL ( see page 490): SELECT * FROM {id Order Details} Then set MasterFields ( see page 482) to ORDERID, IndexFieldNames ( see page 480) to ORDERID and MasterSource ( see page 482) to dsOrders. The base setup is finished. So, how it works ? AnyDAC builds for qOrderDetails a list of pairs - qOrders and qOrderDetails fields, where fields in each pair have the same position, master fields in MasterFields ( see page 482), detail fields in IndexFieldNames ( see page 480). When the current qOrders record is changed, AnyDAC applies the range to qOrderDetails, where details fields are equal to corresponding master fields. In our case qOrderDetails OrderID field is equal to qOrder OrderID field. Naja, egal ich werde weitermachen mit Parameter. Dankeschön. |
AW: AnyDAC mit Master-Detail funkt nicht
Hast du IndexFieldNames passend gesetzt?
MasterField gibt die Feldnamen in der MasterTabelle an, die mit den IndexFieldNames der DetailTabelle korrelieren müssen. In deinem Fall sollte das wohl in beiden Fällen PASSEINGAENGEID sein. |
AW: AnyDAC mit Master-Detail funkt nicht
Hallo Uwe,
ah, IndexFieldNames muss in der Master Query und in Detail Query auf das gleiche Masterfeld = PASSEINGAENGEID stehen. Jetzt funktioniert auch damit. Besten Dank Uwe. Das habe ich so nicht verstanden, sondern nur in der Detail Query. Bestan Dank Uwe. Gruß Kostas |
AW: AnyDAC mit Master-Detail funkt nicht
Der Index der Master-Query ist egal. Nur bei der Detail-Query muss der Index zu dem MasterField passen.
|
AW: AnyDAC mit Master-Detail funkt nicht
Hallo Uwe,
ja sehr komisch, jetzt funktioniert auch wenn ich den Index nur bei der Detail-Query setze. Genau das habe ich vorher mehrfach ausprobiert. Es hat nie funktioniert. Ich habe keine Ahnung warum es vorher nicht ging. Dankeschön nochmals Uwe. Gruß Kostas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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