Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: steveeeee am August 29, 2020, 15:01:24

Titel: Werte in Tabellen-Beziehung mit Kriterien ermitteln
Beitrag von: steveeeee am August 29, 2020, 15:01:24
Hallo zusammen,

ich benötige eure Hilfe bei der Erstellung einer (für mich wohl zu komplizierten) Abfrage.
Ich habe eine Tabelle in die ich Parameter eingetragen habe. Diese Parameter haben selber einen Typ und können ebenfalls Personen zugeordnet werden.
Tabellen_Beziehungen.PNG

Nun möchte ich eine Abfrage erstellen. Diese soll zu jeder Person/jedem Patienten (Zeilen) die entsprechenden Parameter (Spalten) aufführen. Dabei sollen die Parameter gewisse Kriterien erfüllen.
Hier ein Beispiel:

Letzter Wert [Value] des Typs [TypeID] mit einem bestimmten Datum [Date].

Bisher habe ich das etwa so gelöst:
test: DomLetzterWert("[Value]";"Parameter";"PatientID = " & [Patienten].[PatientID] & " AND TypeID = 14")
Allerdings ist aus bekannten Gründen die Funktion DomLetzterWert ja nicht so elegant. Außerdem tue ich mich schwer mit dem Datums-Kriterium:
lab_test: DomLetzterWert("[Value]";"Parameter";"PatientID = " & [Patienten].[PatientID] & " AND Date = #" & Format([Patienten].[EinschlussDatum]; "yyyy-mm-dd") & "# AND TypeID = 11")Gibt folgenden Fehler aus:
Syntaxfehler in Datum in Abfrageausdruck 'PatientID = 1 AND Date = #yyyy-07-dd# AND TypeID = 1'

Habe verschiedene Schreibweisen des Datums (mit und ohne # etc.) ausprobiert, doch komme hier irgendwie nicht weiter :(

Vielen Dank für alle hilfreichen Beiträge!
steve
Titel: Re: Werte in Tabellen-Beziehung mit Kriterien ermitteln
Beitrag von: DF6GL am August 29, 2020, 17:04:14
Hallo,

syntaktisch so muss es in der Abfrage so lauten:

lab_test: DomWert("[Value]";"Parameter"; " & Format([Patienten].[EinschlussDatum];"\#yyyy-mm-dd\#")  & " =  Date() AND TypeID = 11")


Möglicherweise geht auch:

lab_test: DomWert("[Value]";"Parameter"; " & [Patienten].[EinschlussDatum]  & " =  Date() AND TypeID = 11")

Wobei Date()  das aktuelle Datum bedeutet.

Insgesamt kommt mir die Konstruktion etwas verquert vor. Domwert ist vermutlich ganz überflüssig.


Zeigt mal  vollständig (mit alle Feldern)  die Tabelle "Patienten".

Als Lösungsweg:

Erstelle eine Abfrage im Entwurfsmodus, füge alle Tabellen hinzu und ziehe alle Felder, die angezeigt werden sollen, aus den Tabellen in die unteren Spalten.

Schreib dann die Kriterienwerte in das Kriteriumsfeld der jeweiligen Spalte und entferne den Anzeige-Haken, sofern es sich um ein nicht anzuzeigendes Feld handelt.




btw:

Dringend keine reservierten Wörter verwenden! (Value, Name, Date, Time)


Benenne mehrfach vorkommende Feldnamen  (--> "ID") eindeutig.
Titel: Re: Werte in Tabellen-Beziehung mit Kriterien ermitteln
Beitrag von: steveeeee am August 30, 2020, 19:22:10
Danke für deine Hinweise!
Habe deinen Vorschlag probiert und nach einer Anpassung des Datum-Formats funktioniert jetzt hiermit:

lab_ggt_cur: DomLetzterWert("[Value]";"Parameter";"PatientID = " & [Patienten].[PatientID] & " AND [Date] = " & Format([Patienten].[EinschlussDatum];"\#jjjj-mm-tt\#") & " AND TypeID = 11")

ZitatInsgesamt kommt mir die Konstruktion etwas verquert vor. Domwert ist vermutlich ganz überflüssig.
Ja, sehe ich auch so! Eigentlich hätte ich es schon gerne elegant mit einer ordentlichen SQL-Abfrage ohne DomLetzterWert gelöst. Es gibt nämlich auch den Fall, dass ich am selben Tag mehrere Einträge in der Tabelle Parameter zu einer Person hinterlegt habe. Deswegen sollte ich diese auch entsprechend sortieren können.

Wie kann ich in DomLetzterWert denn eine ORDER By-Klausel einbringen?

VG
steve
Titel: Re: Werte in Tabellen-Beziehung mit Kriterien ermitteln
Beitrag von: ebs17 am August 30, 2020, 20:33:47
ZitatEigentlich hätte ich es schon gerne elegant mit einer ordentlichen SQL-Abfrage ohne DomLetzterWert gelöst
Auf einen Vorschlag wirst Du warten können, wenn da ein Patienten.EinschlussDatum vom Himmel fällt.
Dessen Bedeutung ist unklar, und eine Verknüpfung auf die Verknüpfungstabelle lässt Alarmglocken läuten.