Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FireDac Master Detail Problem (https://www.delphipraxis.net/184734-firedac-master-detail-problem.html)

burbetpappel 17. Apr 2015 09:42

Datenbank: ÚNIFY (Gupta) • Version: 11.5 • Zugriff über: ODBC

FireDac Master Detail Problem
 
Hallo zusammen,

folgendes Problem:

Ich habe bisher immer (noch) die gute alte BDE benutzt - hiermit waren Master/Detail Beziehungen ein Kinderspiel.
Nun habe ich mir Delphi XE7 zugelegt und muss gezwungenermaßen auf FireDAC umstellen.

nun zum Problem:

Ich habe eine Master und eine Detailtabelle - diese sind auch, denke ich, richtig verbunden. Wenn ich aber nun die Detailtabelle aktivieren möchte, bekomme ich folgende Fehlermeldung:

"Exception EODBCNativeException in Modul AuftragsanalyerV2.exe bei 0025546E. [FireDAC][PHYS][ODBC][UNIFY][ODBC Driver][SQLBASE]00127
SQL NCR Cursor identified in the SQL command is not positioned on a row.

Ich denke ich weiß, warum die Meldung kommt, weiß aber nicht, wie ich sie abschalten kann.
In der Mastertabelle gibt es eine ID, für die es in der Detailtabelle keine Daten gibt - in der Detailtabelle kann also für diese ID nichts gefunden werden - die BDE Komponenten haben dies immer ignoriert und einfach ein leeres DBGRID für die Detailmenge dargestellt.

Wie bekomme ich das auch mit den Firedac Komponenten hin?

Grüße

Peter

mkinzler 17. Apr 2015 11:23

AW: FireDac Master Detail Problem
 
Das sollte auch das Verhalten bei allen Zugriffskomponenetn sein. Der Fehler scheint allerdings vom ODBC-Treiber zu kommen. Bei FireDAC sollte das eigentlich funktionieren.

burbetpappel 17. Apr 2015 12:46

AW: FireDac Master Detail Problem
 
Hallo,

ich habe mal auf die Schnelle mein "altes" Delphi Xe2 geschnappt und die Anwendung mit der BDE nachgebaut - derselbe ODBC-Treiber.
Hier entsteht das Problem nicht - der ODBC Treiber scheidet also als Fehlerquelle aus.

Union 17. Apr 2015 13:14

AW: FireDac Master Detail Problem
 
Wo ist denn dokumentiert, dass FireDac Gupta unterstützt?

burbetpappel 17. Apr 2015 13:43

AW: FireDac Master Detail Problem
 
Dazu gibt es ja den ODBC Treiber
=> FireDAC => ODBC (OpenDatabaseConnectivity) => Gupta

mkinzler 17. Apr 2015 14:10

AW: FireDac Master Detail Problem
 
Funktioniert es direkt mit den ADO-Komponenten (dbGo)?

burbetpappel 20. Apr 2015 07:26

AW: FireDac Master Detail Problem
 
Habe ich noch nicht getestet - mit der BDE und XE2 funktioniert es.

Werde es später mal testen.

Ich habe auch mal einen Button eingebaut (XE7 / FireDAC), der die Detailtabelle erst per Klick einschaltet. Wenn ich vor dem Einschalten auf einen Datensatz in der Mastertabelle navigiere, von dem ich weiß, dass hierzu auch ein Detailsatz existiert und dann einschalte funktioniert es. Wenn ich dann in der Mastertabelle scrolle, bis ich auf einen Datensatz stoße, für den kein Detailsatz existiert kommt die Exception wieder hoch - habe schon überlegt ein entsprechendes Exceptionhandling einzubauen - allerdings versuche ich erst mal einen evtl. existierenden "Schalter" zu finden, der das automatisch (analog BDE) macht. Ich kann mir nicht vorstellen, dass die Jungs, die die FireDAC (DAC) Komponenten programmiert haben, an so etwas alltägliches nicht gedacht haben sollen.



Grüße

Peter

mkinzler 20. Apr 2015 08:39

AW: FireDac Master Detail Problem
 
Liste der Anhänge anzeigen (Anzahl: 4)
Ich habe mal ein kleines Testprojekt in XE7 erstellt. Dein Fehler kommt nicht, aber das Programm funktioniert auch nicht wie gewünscht.
Es wird immer die identische ID gezogen und nicht das angegebene PK Feld (MASTER).
Ich habe die Detailtabelle zum Test auch mit UniDAC gemacht, hier funktioniert es.

3rad 16. Okt 2015 15:56

AW: FireDac Master Detail Problem
 
Zitat:

Zitat von mkinzler (Beitrag 1298466)
Es wird immer die identische ID gezogen und nicht das angegebene PK Feld (MASTER).

Gibt es in FireDAC evtl. eine Option mit der man diese Einschränkung umgehen kann? Wir haben aktuell DOA und da ist das kein Problem.

Wir haben unsere DETAIL-SQL-Statements immer genau anders herum aufgesetzt
Beispielhafter-Constraint KUNDE.ID = RECHNUNG.V_KUNDE

Das zugehörige Detail-SQL Statement lautet:
select * from RECHNUNG where V_KUNDE=:V_KUNDE

In FireDAC müsste es so lauten. Anders hab ich die Master/Detail-Beziehung nicht hinbekommen.
select * from RECHNUNG where V_KUNDE=:ID

Ist das eine Einstellungssache in FireDAC?

Viele Grüße
Andreas

p80286 16. Okt 2015 16:36

AW: FireDac Master Detail Problem
 
Zitat:

Zitat von mkinzler (Beitrag 1298466)
Es wird immer die identische ID gezogen und nicht das angegebene PK Feld (MASTER).

Das klingt aber sehr nach
Delphi-Quellcode:
select * from t1 join t2 using (id)
statt nach
Delphi-Quellcode:
select * from T1 left join t2 on (t1.id=t2.master)
Kann man das irgendwo nachschauen?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Seite 1 von 2  1 2      

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