Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Probleme mit SQLstring

Begonnen von Beate1953, Mai 08, 2014, 14:14:50

⏪ vorheriges - nächstes ⏩

Beate1953

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

DF6GL

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\#")

Beate1953

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