Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: mad am August 08, 2019, 19:34:55

Titel: Tabellenfeld im Bericht anzeigen
Beitrag von: mad am August 08, 2019, 19:34:55
Hallo Zusammen,

bräuchte wieder mal Hilfe.
Ich habe einen Bericht der auf einer entsprechenden Abfrage beruht. Im Bericht möchte ich nur den Ort der gefilterten Person anzeigen lassen. Diese Abfrage ist bereits sehr umfangreich und wenn ich die Ortsteile-Tab einbinden möchte kommt folgende Meldung:
ZitatDie SQL-Anweisung konnte nicht ausgeführt werden, da sie mehrdeutige Inklusionsverknüpfungen enthält. Damit eine der Verknüpfungen zuerst ausgeführt wird, müssen Sie eine separate Abfrage erstellen, die die erste Verknüpfung ausführt, und dann die Abfrage in die SQL-Anweisung einschließen. (Fehler 3258)

Nun habe ich ein ungebundenes Textfeld eingefügt und folgendes ausprobiert:
=DomWert("Ort";"Ortsteile")
Nun zeigt das Feld allerdings nur den ersten Wert der Tabelle "Ortsteile".

Als ergänzendes Kriterium wollte ich die Ortkenn aus Personal mit der Ortkenn aus Ortsteile vergleichen und so den Ort der Person angezeigt bekommen.
=DomWert("Ort";"Ortsteile";"Ortkenn"=[Ortkenn].[Personal])
Dann zeigt das Textfeld #Name?

In beiden Tabellen ist "Ortkenn" ein Textfeld.
Was mache ich falsch?

Über Hilfe würde ich mich freuen.

Gruss
mad
Titel: Re: Tabellenfeld im Bericht anzeigen
Beitrag von: DF6GL am August 08, 2019, 20:10:26
Hallo,
Zitat
Diese Abfrage ist bereits sehr umfangreich

und (sehr wahrscheinlich) falsch aufgebaut,  bzw. es liegt ein falsches Tabellenkonzept zugrunde....

Zeige mal den SQL-String dieser Abfrage...

Zitat=DomWert("Ort";"Ortsteile";"Ortkenn"=[Ortkenn].[Personal])

Neben der falschen Syntax:

Was hat eine "Ortkenn"(ung) mit "Personal" zu tun?

Woher kommt "[Ortkenn].[Personal]" überhaupt?

Wenn, dann eher so:

=DomWert("Ort";"Ortsteile";"Ortkenn=" & [Ortkenn])

Dabei ist "[Ortkenn]" das Berichtsfeld, das den ID-Wert des Ortes enthält.
Titel: Re: Tabellenfeld im Bericht anzeigen
Beitrag von: mad am August 08, 2019, 20:24:09
Hallo,

hier SQL-String der Abfrage:
SELECT Einsaetze.ADatumE, Einsaetze.EinsatzKenn, Einsaetze.EinsatzArten, Einsaetze.EinsatzAdresse, [Registrierung-Einsatz].EinsStdN, Einsaetze.EBemerkung, Personal.Name, [Registrierung-Einsatz].Atemschutz, Sum(DateDiff("n",0,[EinsStdN])) AS EinsStdNMin, Sum(DateDiff("n",0,[PAEinsStdN])) AS PAEinsStdNMin, Personal.Ortkenn
FROM Personal RIGHT JOIN (Einsaetze INNER JOIN [Registrierung-Einsatz] ON Einsaetze.EinsatzKenn = [Registrierung-Einsatz].Einsaetze) ON Personal.Namekenn = [Registrierung-Einsatz].Name
GROUP BY Einsaetze.ADatumE, Einsaetze.EinsatzKenn, Einsaetze.EinsatzArten, Einsaetze.EinsatzAdresse, [Registrierung-Einsatz].EinsStdN, Einsaetze.EBemerkung, Personal.Name, [Registrierung-Einsatz].Atemschutz, Personal.Ortkenn
HAVING (((Personal.Name) Like [Namen eingeben *]));


ZitatWas hat eine "Ortkenn"(ung) mit "Personal" zu tun?

Woher kommt "[Ortkenn].[Personal]" überhaupt?
Die Ortkenn gibt den Wohnort der Person wieder.

ZitatWenn, dann eher so:

=DomWert("Ort";"Ortsteile";"Ortkenn=" & [Ortkenn])

Jetzt zeigt das Textfeld #Fehler.


Gruss
mad
Titel: Re: Tabellenfeld im Bericht anzeigen
Beitrag von: DF6GL am August 09, 2019, 10:29:42
Hallo,

die SQL dürfte wegen der Datediff- und sonstigen Berechnungen recht langsam ablaufen.

Zudem:

Verwende Eckklammern und das Feld "Name" (--> "[Name]")

und entferne die Having-Condition, benutze anstatt eine Where-Condition.


Ich bin von einem numerischen ID-Feld ausgegangen. Wenn es sich um Text handelt, dann so:

=DomWert("Ort";"Ortsteile";"Ortkenn='" & [Ortkenn] & "'")
Titel: Re: Tabellenfeld im Bericht anzeigen
Beitrag von: mad am August 11, 2019, 08:56:05
Danke für die Unterstützung.
Klappt super.


Danke
mad