Neuigkeiten:

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

Mobiles Hauptmenü

Bestimmten Uhrzeitwert per dlookup abfragen und in Textfeld ausgeben

Begonnen von Samurai2_de, April 23, 2016, 19:33:42

⏪ vorheriges - nächstes ⏩

Samurai2_de

Hallo ihr Wissenden!

Mir bereitet gerade ein Formular in meiner Datenbank Kopfzerbrechen.
In dem Formular gibt es ein Feld "Datum", über das per Dropdown ein Datum gewählt werden kann, das aus einer anderen Tabelle ("tab_Kalender") abgefragt wird. Nachdem dies geschehen ist soll in dem Textfeld "Uhrzeit1" eine in einer anderen Tabelle ("tab_Zeitraum") hinterlegte Uhrzeit ausgegeben werden.
In dieser Tabelle existieren unter anderem die Felder "Uhrzeit_Beginn", "Zeitraum_Beginn" und "Zeitraum_Ende". In den Felder Zeitraum_Beginn und Zeitraum_Ende wurde zuvor das Start- bzw. Enddatum eines mehrtägigen Zeitraums festgelegt.
In dem Textfeld "Uhrzeit1" soll also die Uhrzeit ausgegeben werden, die für das ausgewählte Datum gilt, welches zwischen dem Datum für "Zeitraum_Beginn" und "Zeitraum_Ende" liegt. Ich hoffe, soweit ist das noch klar...

Mein Code sieht bislang so aus:
Dim i As Date
i = Me!Datum.Column(0)
Me!Uhrzeit1 = DLookup(Uhrzeit_Beginn, tab_zeitraum, i >= Zeitraum_Beginn And i <= Zeitraum_Ende)


Leider bekomme ich so immer kein Ergebnis, das Textfeld bleibt mit "#Name?" beschrieben.

Kann mir bitte jemand von euch mitteilen, wo der Fehler in meinem Code liegt bzw. einen verbesserten Code posten?

Für eure Hilfe wäre ich euch sehr dankbar!

Mit freundlichem Gruß

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

MaggieMay

#1
Hallo,

du hast die Syntaxregeln der Domänen-Funktionen nicht beachtet.

So wäre es formal korrekt:
Me!Uhrzeit1 = DLookUp("Uhrzeit_Beginn", "tab_zeitraum", i & " >= Zeitraum_Beginn And " & i & "<= Zeitraum_Ende")

Allerdings müssen Datumswerte in SQL-Abfragen speziell formatiert werden, so dass du mit dieser Variante evtl. eher zum Ziel kommst:
Me!Uhrzeit1 = DLookUp("Uhrzeit_Beginn", "tab_zeitraum", Format(Me!Datum.Column(0), "\#yyyy\/mm\/dd#") & " BETWEEN Zeitraum_Beginn And Zeitraum_Ende")
Freundliche Grüße
MaggieMay

Samurai2_de

Vielen herzlichen Dank für die Antwort!
Ich habe beide Varianten probiert, leider bekomme ich beide Male kein Ergebnis. In dem Textfeld steht noch immer "#Name?".
Ich habe den Code für die Ereignisprozedure auf das Ereignis "Nach Aktualisierung" für das Feld "Datum" gelegt. Das ist doch an dieser Stelle richtig, oder habe ich da einen Denkfehler? (Testweise habe ich es auf "Nach Aktualisierung" für das Formular gelegt, leider auch hier keine Änderung)

Wenn ich eine Überwachung im VBA-Editor hinzufüge, meldet diese bei "Wert": "Außerhalb des Kontexts"...?

Ich befürchte, ich sehe gerade den Wald vor lauter Bäumen nicht...

Gruß

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

MaggieMay

Hi,

Zitatüber das per Dropdown ein Datum gewählt werden kann, das aus einer anderen Tabelle ("tab_Kalender") abgefragt wird

wie sieht denn die Datensatzherkunft (-> SQL-Code) des Kombifeldes aus?
Freundliche Grüße
MaggieMay

Samurai2_de

SELECT tab_Kalender.DatumTage
FROM tab_Kalender
ORDER BY tab_Kalender.[DatumTage];
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

DF6GL

Hallo,



die Datum-Formatierung sollte so aussehen:


ZitatMe!Uhrzeit1 = DLookUp("Uhrzeit_Beginn", "tab_zeitraum", Format(cDate(Me!Datum.Column(0)), "\#yyyy-mm-dd\#") & " BETWEEN Zeitraum_Beginn And Zeitraum_Ende")

Samurai2_de

Zitat von: DF6GL am April 24, 2016, 09:04:23

ZitatMe!Uhrzeit1 = DLookUp("Uhrzeit_Beginn", "tab_zeitraum", Format(cDate(Me!Datum.Column(0)), "\#yyyy-mm-dd\#") & " BETWEEN Zeitraum_Beginn And Zeitraum_Ende")

Das war's, jetzt funktioniert es endlich! Vielen herzlichen Dank!

Gruß

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!