Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Beate1953 am Mai 08, 2014, 14:14:50

Titel: Probleme mit SQLstring
Beitrag von: Beate1953 am Mai 08, 2014, 14:14:50
Hallo,
ich möchte in einem Bericht alle Geräte anzeigen lassen, die bereits einmal Inventur hatten (also in Tabelle Inventur stehen), aber nicht im Zeitraum zwischen Andat und Endat.

Ich habe als RecordSource folgenden SQL-Code, der offensichtlich einen Fehler hat:

SQLstr = "SELECT  Posten.Entfernen, Posten.Bezeichnung, Posten.Geraetegruppe, Posten.Standort "
SQLstr = SQLstr & "FROM Posten LEFT JOIN Inventur ON Posten.Barcode = Inventur.INVBarcode "
SQLstr = SQLstr & "WHERE (((Posten.Entfernen)=False) AND ((Posten.Barcode) Not In "
SQLstr = SQLstr & "(SELECT Posten.Barcode FROM QYPoMitInv WHERE Inventur.InvDatum Between " & Format(Andat, "\#yyyy-mm-dd\#")
SQLstr = SQLstr & " AND " & Format(Endat, "\#yyyy-mm-dd\#") & ")))"

Wenn ich den Bericht aufrufe, öffnet sich das Dialogfenster "Parameterwert eingeben", "Barcode:". Wenn ich dann irgendeinen Barcode eintippe, zeigt der Bericht nur das Gerät mit dem eingetippten Barcode an. Wiese fragt Access nach einem Barcode? Außerdem hätte Ich gerne eine Liste aller Geräte, die den Kriterien entsprechen.

QYPoMitInv ist nur eine Abfrage mit den Tabellen Posten und Inventur. Andat und Endat sind öffentliche Variablen vom Typ Date.

Vielen Dank im Voraus
Beate1953
Titel: Re: Probleme mit SQLstring
Beitrag von: DF6GL am Mai 08, 2014, 14:32:42
Hallo,


1) offensichtlich gibt es "Barcode" nicht in Tabelle "Posten", bzw. in der Abfrage.


2) Deine Where-Conditions sind "falsch" herum...


WHERE (((Posten.Entfernen)=False) AND ((Posten.Barcode)  In "
SQLstr = SQLstr & "(SELECT Posten.Barcode FROM QYPoMitInv WHERE  Inventur.InvDatum Not Between " & Format(Andat, "\#yyyy-mm-dd\#")



Geht es nicht auch so:

SQLstr = "SELECT  distinct Posten.Entfernen, Posten.Bezeichnung, Posten.Geraetegruppe, Posten.Standort "
SQLstr = SQLstr & "FROM Posten Inner JOIN Inventur ON Posten.Barcode = Inventur.INVBarcode "
SQLstr = SQLstr & "WHERE Posten.Entfernen=False AND "
" Inventur.InvDatum Between " & Format(Andat, "\#yyyy-mm-dd\#")
SQLstr = SQLstr & " AND " & Format(Endat, "\#yyyy-mm-dd\#")
Titel: Re: Probleme mit SQLstring
Beitrag von: Beate1953 am Mai 12, 2014, 13:45:46
Hallo,

das mit dem Barcode hat sich inzwischen geklärt. Ich hatte vergessen SELECT Posten.Barcode, ...zu schreiben.

Die Where-Conditions bei mir sind meines Erachtens schon richtig, denn ich will ja genau die Geräte, die im angegebenen Zeitraum keine Inventur hatten. Jedenfalls bekomme ich nun eine Liste, die zu stimmen scheint.

Vielen Dank
Beate1953