Where-Between-And-Klausel/Code

No_Bie

Grünschnabel
ACCESS/Where-Between-And-Klausel

Habe mir eine SQL Abfrage in einer Access-Sub-Prozdur gebastelt, die bis auf eine Ausnahme auch funktioniert.

Alle Variablen sind deklariert [SQL (1 to 4)].

Aus einer Tabelle [Artikelnachweis_FB_VA] soll in der Spalte [.Ausgabedatum] ein Datumsbereich ausgelesen werden und Datensätze in diesem Bereich als Recordsource angezeigt werden. Die Variablen SQL(2) und SQL(3) werden aus dem Suchformular (Datum_Beginn + Datum_Ende) ausgelesen.
Wird im Suchformular nur Datum_Beginn eingetragen, funktioniert eine Select-Where Klausel die dann über eine Select-Case Anweisung aktiviert wird.
Die folgende Select -Anweisung soll den Datumbereich festlegen.

SQL(4) = "SELECT Artikelnachweis_FB_VA.*
FROM Artikelnachweis_FB_VA
WHERE (((Artikelnachweis_FB_VA.Ausgabedatum
BETWEEN (' " & SQL(2) & " * ')AND(' " & SQL(3) & " * '));"

Im Code ist diese Select-Anweisung in einer Zeile geschrieben.

Als Fehlermeldung erhalte ich "Fehlender Operator + Falsche Syntax".

Falls meine gefundene Lösung (die ja auch nicht funktioniert) für den Accesscrack zu primitiv ist, bitte ich von entsprechenden Kommentaren abzusehen und bitte gleichzeitig um Nachsicht.

Ansonsten bin ich für jeden hilfreichen Hinweis dankbar
 
Zuletzt bearbeitet:
Du hast zumindest schon mal 2 Klammern zuviel:
SQL(4) = "SELECT Artikelnachweis_FB_VA.*
FROM Artikelnachweis_FB_VA
WHERE (( (Artikelnachweis_FB_VA.Ausgabedatum
BETWEEN (' " & SQL(2) & " * ')AND(' " & SQL(3) & " * '));"
 
Vielen Dank, funktioniert aber nicht.

Ich werde mal zeigen, wie ich die SQL-Klausel komplett gebaut habe und versuchen, die zusammengesetzte Klausel aus dem Überwachungsfenster darzustellen.

If Not IsNull(Me!Datum_Beginn) Then
AnzKrit = 2
SQL(2) = "((Artikelnachweis_FB_VA.Ausgabedatum)
Like '" & Me!Datum_Beginn & "*')"
End If

If Not IsNull(Me!Datum_Ende) Then
AnzKrit = 3
SQL(3) = "((Artikelnachweis_FB_VA.Ausgabedatum) Like '" & Me!Datum_Ende & "*')"
End If

If Not IsNull(Me!Datum_Ende) Then
AnzKrit = 4
SQL(4) = "SELECT Artikelnachweis_FB_VA.*
FROM Artikelnachweis_FB_VA
WHERE ((Artikelnachweis_FB_VA.Ausgabedatum
BETWEEN (' " & SQL(2) & " * ')AND(' " & SQL(3) & " * '));"

Im Überwachungsfenster wird die SQL-Klausel dann folgendermaßen
gezeigt:

"SELECT Artikelnachweis_FB_VA.* FROM Artikelnachweis_FB_VA
WHERE ((Artikelnachweis_FB_VA.Ausgabedatum
BETWEEN (' ((Artikelnachweis_FB_VA.Ausgabedatum) Like '01.01.2004*') * ')
AND(' ((Artikelnachweis_FB_VA.Ausgabedatum) Like '01.05.2004*') * '));"

Es könnte auch sein, dass die Auswahl der Daten aus EINER Tabellenspalte hier Probleme verursacht.

Wie bereits gesagt, wenn ich über die SELECT-Case Anweisung lediglich
SQL(2) = Datum_Begin auslese (ohne BETWEEN-AND_Klausel) funktioniert es.
 
Naja, ich habe noch ein wenig gestöbert und bin jetzt der Ansicht, dass meine SQL-Klausel eine REFLEXIVVERKNÜPFUNG ist.

Ich müsste also mit INNER JOIN einen ALIAS einbauen, weiss aber nicht wo genau das passieren muss. Habe auch schon erfolglos rumprobiert.

Kann mir jemand sagen, ob ich auf dem Holzweg bin und falls nicht, wie eine Lösung aussehen könnte.
 
Zurück