+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LL20: JOIN und Table- und Fieldaliases


(Nikolaus Kern) #1

Hallo,

ich versuche eine einfache SQL Abfrage an LL zu übergeben. Dort bekomme ich eine Fehlermeldung, dass das Feld X nicht vorhanden sei.

Umgebung: .net 4.0,
DB: Firebird SQL

fbAnfragen := fbCon:CreateCommand()
// Join mit Aliases und aggregierten Feldern
// fbAnfragen:CommandText := “SELECT a.AUSSCHREIBER_ID, a.ANFRAGESTATUS, COUNT(*) AS ANZAHL, LIST(b.FIRMA) AS FIRMA FROM ECHOLOT_ANFRAGEN AS a LEFT JOIN ECHOLOT_KONTAKTE AS b ON a.AUSSCHREIBER_ID = b.KONTAKTID GROUP BY a.AUSSCHREIBER_ID, a.ANFRAGESTATUS ORDER BY a.AUSSCHREIBER_ID, a.ANFRAGESTATUS”

// Join mit Tablealiases
// fbAnfragen:CommandText := “SELECT * FROM ECHOLOT_ANFRAGEN AS a LEFT JOIN ECHOLOT_KONTAKTE AS b ON a.AUSSCHREIBER_ID = b.KONTAKTID”

// Join ohne Aliases
fbAnfragen:CommandText := “SELECT * FROM ECHOLOT_ANFRAGEN LEFT JOIN ECHOLOT_KONTAKTE ON AUSSCHREIBER_ID = KONTAKTID”

llProv := DbCommandSetDataProvider{}
llProv:AddCommand(fbAnfragen, “Anfragen” , AppGlobals.firebirdDF, AppGlobals.firebirdMF)

e03 := ListLabel{}
e03:DataSource := llProv

// e03:SetDataBinding(fbAnfragen, “”)

Es macht keinen Unterschied. ob ich die Daten mit SetDatenbinding() oder DataSource übergebe.

Es sieht so aus, als ob beim Ausführen des Reports die Felder noch einmal geprüft werden und dabei die Tablealiases und auch die aggregierten Felder wie COUNT(), LIST() etc. nicht gefunden werden. Entweder weil es sie beim Table nicht gibt (z.B. COUNT() ) oder weil sie im anderen Table (z.B. im joined table) liegen.

Beim Starten des Designmodus wird die SQL Abfrage genau wie oben geschrieben an den SQL Server geschickt (Habe ich über die Logs gesehen).

Muss ich hier noch einen Parameter setzen, damit Table- und Field-Aliases berücksichtigt werden?

Danke

Nikolaus Kern


(combit Support - Erdal Alacali) #2

Sehr geehrter Herr Kern,
vielen Dank für Ihren Beitrag.

Versuchen Sie bitte die Eigenschaft MinimalSelect auf “False” zu stellen:
llProv.MinimalSelect = false;

Falls die Eigenschaft nicht hilft würden wir Sie bitten, einen Supportcase zu öffnen, da es möglicherweise notwendig sein wird bei der weiteren Kommunikation auch Dateien auszutauschen, Vielen Dank.

Mit freundlichen Grüßen

Erdal Alacali
Technischer Support
combit GmbH


(Nikolaus Kern) #3

Sg. Herr Alacali,

danke für die Info. Damit funktionieren auch die komplexeren Abfragen mit Joins und Aliases wie erwartet.

MfG

Nikolaus Kern