AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken AnyDAC mit Master-Detail funkt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

AnyDAC mit Master-Detail funkt nicht

Ein Thema von Kostas · begonnen am 25. Dez 2012 · letzter Beitrag vom 26. Dez 2012
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.062 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 17:35
Datenbank: Firebird • Version: 2.5 • Zugriff über: AnyDAC
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:
SELECT PASSEINGAENGEID, PASSEINGANGAM, VEREINID, ABGESCHLOSSEN
FROM PASSEINGAENGE
eigegeben. Außer Automatic Incrementing sonst nichts eingestellt!
Die DataSource umbenannt in dsPASSEINGAENGE

Fürs Detail auf der Form ein weiteres TADQuery mit dem SQL
Code:
SELECT PASSEINGANGPOSID, PASSEINGAENGEID, PASSNR, VORNAME, NACHNAME
FROM PASSEINGANGPOS
Ebenfalls unter Options nur die AutoInc infos eingetragen sonst nichts!
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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 19:35
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (25. Dez 2012 um 19:39 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.062 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 21:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#4

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 21:32
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.062 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 21:50
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#6

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 25. Dez 2012, 22:59
Der Index der Master-Query ist egal. Nur bei der Detail-Query muss der Index zu dem MasterField passen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.062 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: AnyDAC mit Master-Detail funkt nicht

  Alt 26. Dez 2012, 22:33
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
  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 03:23 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