September 26, 2020, 20:43:31

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Werte in Tabellen-Beziehung mit Kriterien ermitteln

Begonnen von steveeeee, August 29, 2020, 15:01:24

⏪ vorheriges - nächstes ⏩

steveeeee

August 29, 2020, 15:01:24 Letzte Bearbeitung: August 29, 2020, 15:41:42 von steveeeee
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.
Sie dürfen in diesem Board keine Dateianhänge sehen.

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

DF6GL

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.

steveeeee

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

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard