Syntaxfehler im Code

  • VB6

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von VisualFreak1985.

    Syntaxfehler im Code

    Hallo Leute,

    ich habe bereits gestern versucht einen Code zu schreiben bei dem eine bestimmte Kommisionsnummer gesucht wird und dann noch gegeuckt wird ob in dem DatumRücklieferung in der Datenbank was drin steht.

    Jetzt funktioniert der Code soweit das die richtige Kommisionsnummer ausgefiltert wird aber den Programmcodeteil mit dem DatumRücklieferung funktioniert nicht. Er gibt mir alle Felder aus egal ob Datum drin steht oder nicht.

    Ich kopiere euch die Zeile Code mal hier rein und wäre super wenn mir einer helfen könnte.

    Code:

    Set RSTemp = DBBaustelle.OpenRecordset("SELECT * FROM BMaterial Where [KommissionsNr] = '" & A & "' AND [DatumRücklieferung] IS NULL", dbOpenDynaset)

    Infos:

    Es handelt sich in der Datenbank um einen Datum/Zeit Feld. Ich arbeite mit einer AccessDatenbank.

    Würde mich über Vorschläge freuen damit es funktioniert.

    Gruß
    VisualFreak1985
    Ersma Klammern setzen. sollte zwar keinen Unterschied machen, aber schaden tut's auch nicht

    SQL-Abfrage

    1. ... WHERE ((A = 1) AND (B = 2))

    Dreizehnmal prüfen, ob das Feld "Rücklieferdatum" (Ruecklieferdatum ist übrigens VIIIIIIIEL besser) wirklich, wirklich, wirklich NULL bei dem Datensatz ist, den du auswählen willst. Im Zweifel prüfen, ob die Datenbank die du im Programm verwendest auch die ist, die du mit Access aufmachst - ist mir auch schon mal passiert, da sucht man sich nach Fehlern zu Tode ;)
    Wenn tatsächlich ein "theortischer" NULL-Wert dring steht und der Record selektiert wird, einfach im Debug Modus mal ein break auf Debug.Print(recordset.field(nummerdesfeldes) setzen. Dann sollte man in der IDE zumindest sehen können. was da denn nun drinsteht.

    Jetzt bekomme ich die Fehlermeldung:

    Kommt, wenn man auf dem Holzweg ist.

    Datumsfelder in Access können sehr wohl NULL sein. Andernfalls würden mehrere meiner Programme, die seit Jahren im kommerziellen Einsatz sind, nicht funktionieren - und das seit Jahren.

    Im ürbrigen:
    '01.01.1900'
    ist ein STRING. Und ein String ist kein Datum. Sonst würde er ja Datum heißen und nicht String. Um ein Datum zu selektieren benötigt man eine andere Syntax. Die ich aber hier nicht angebe, weil es ein Holzweg ist. Es besteht ein Problem und das Problem sollte gelöst und nicht "umgangen" werden.

    Einfach mal in Access schnell ne Query anlegen: Nur das Datumsfeld und als Kriterium "IS NULL" (oder "Ist Null"). Fertigstellen und ausführen. Wenn er nix anzeigt, gibt's halt keine Felder mit "NULL". Dann evtl mal den "default"-Wert prüfen.
    Das Feld hat überhaupt kein Format.
    ________

    Hallo Picoflop,

    wie lege ich eine Query an und wie genau muss diese heißen?

    Sorry aber bin noch relativ neu auf diesem Gebiet.

    Gruß und Danke

    Edit by Agent: Keine Doppelposts! Es gibt eine Bearbeitenfunktion!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Jetzt bekomme ich folgende Fehlermeldung(siehe Fehlermeldung.jpg).

    Nochmal den Code so wie er jetzt aussieht:

    Set RSTemp = DBBaustelle.OpenRecordset("SELECT FROM BMaterial WHERE (((BMaterial.DatumRücklieferung)<#1/1/1900#) AND ((BMaterial.KommissionsNr)= '" & A & "')) ", dbOpenDynaset)

    Wo liegt der Fehler?

    Gruß und Danke
    Bilder
    • Fehlermeldung.JPG

      15,91 kB, 372×209, 142 mal angesehen
    Hallo das funktioniert wirklich gut aber irgendwie ist das nicht das was ich haben wollte.

    Ich möchte das er mir alle Sachen ausgibt wo die Kommisionsnummer vorkommt und wo kein Datum angezeigt ist aber das funktioniert nicht mit dem folgenden Code:

    Set RSTemp = DBBaustelle.OpenRecordset("SELECT BMaterial.KommissionsNr, BMaterial.DatumRücklieferung From BMaterial WHERE (((BMaterial.KommissionsNr)='" & A & "') AND ((BMaterial.DatumRücklieferung)>#1/1/1900#));", dbOpenDynaset)

    Er zeigt mir damit alles an was größer ist als 01.01.1900 aber ich will doch alle angezeigt haben wo nicht drin steht wie kann ich das machen?

    Gruß und Danke