Guten Tag zusammen,
ich habe folgendes SQL Statement in Access
Krit=""
If Not IsNull(Me!DatumStart AND Me!DatumEnde) Then Krit = Krit & " AND InstDatum BETWEEN '" & Me!DatumStart & "' AND '" & Me!DatumEnde & " '"
SQL = "SELECT * FROM Bestand "
If Krit <> "" Then
Krit = Mid(Krit, 5)
SQL = SQL & "WHERE " & Krit
Wenn ich die Suche nun starte(onClick) dann kommt der Laufzeitfehler 2001. Sie haben die vorherige Aktion abgebrochen.
Wenn ich das Statement nun änder auf "AND InstDatum LIKE ... " und suche nur nach dem StartDatum dann funktioniert die Abfrage.
Habe ich einen Fehler beim Zusammensetzen des Statements?
Hallo,
was passiert "mit ohne" and:
If Not IsNull(Me!DatumStart AND Me!DatumEnde) Then Krit = "InstDatum BETWEEN '" & Me!DatumStart & "' AND '" & Me!DatumEnde & " '"
Wegen Krit="" kannst Du Dir ersparen Krit= Krit & ...
Welchen Feldtyp hat DatumStart?
Harald
Hallo,
versuch mal den untenstehenden Code.
Dim strDatumStart as String, strDatumEnde as String, strSQL as String, Krit as String
strDatumStart = Format(Me!DatumStart, "\#yyyy\-mm\-dd\#")
strDatumEnde = Format(Me!DatumEnde, "\#yyyy\-mm\-dd\#")
If Not IsNull(Me!DatumStart AND Me!DatumEnde) Then Krit = "InstDatum BETWEEN " & strDatumStart & " AND " & strDatumEnde
strSQL = "SELECT * FROM Bestand "
If Krit <> "" Then
Krit = Mid(Krit, 5)
strSQL = strSQL & "WHERE " & Krit
End If
Warum so?....
siehe donkarl.com http://www.donkarl.com?FAQ6.8 (http://www.donkarl.com?FAQ6.8)
HTH
Es kommt nun kein Fehler aber ein Popup in der ein Parameterwert gewünscht ist, ein Ergebnis kommt nicht zustande.
Hallo,
Parameterwert wofür?
Im Anhang ist ein Screenshot, wenn ich das Start und Enddatum eingeben und dann auf Suchen klicke erscheint dieses Fenster, wenn ich dann was eingebe passiert nichts!?
[Anhang gelöscht durch Administrator]
Hallo,
da hast Du wohl "Datum" als Feldname verwendet, und dieses Feld existiert gar nicht, oder Du willst das akt. Datum erhalten und hast dabei die Klammern hinter "Datum" ( --> Datum() ) vergessen
InstDatum ist ein Tabellenfeld, ansonsten kann ich nicht erkennen wie dieser Pop UP zu stande kommt, ich werde weiter forschen
Hallo
irgendetwas heißt "Datum" , und so ein Feld (in Tabelle oder Formular oder SQL-Statement) gibt es nicht.
Hallo,
es geht nicht um InstDatum sondern um ein Feld namens Datum - das verwendest du irgendwo in deinem Code obwohl es ein solches Feld nicht gibt - vielleicht ein Schreibfehler!
Poste doch bitte mal eine K O P I E deines aktuell verwendeten Codes!
Das ist der Code. Dieser hat bis zu der Ergänzung der Zeile mit dem Datum auch das getan was es sollte.
Private Sub MakeSQL()
Dim strDatumStart As String, strDatumEnde As String, TestVon As Double, TestBis As Double, Tmp1 As String, Tmp As String, Itm
Krit = ""
strDatumStart = Format(Me!DatumStart, "\#yyyy\-mm\-dd\#")
strDatumEnde = Format(Me!DatumEnde, "\#yyyy\-mm\-dd\#")
If Not IsNull(Me!Firma) Then Krit = Krit & " AND Firma LIKE '" & Me!Firma & "*'"
If Not IsNull(Me!Artikelname) Then Krit = Krit & " AND Artikelname LIKE '" & Me!Artikelname & "*'"
If Not IsNull(Me!Seriennr) Then Krit = Krit & " AND Seriennr LIKE '" & Me!Seriennr & "*'"
If Not IsNull(Me!MAC) Then Krit = Krit & " AND MAC LIKE '" & Me!MAC & "*'"
If Not IsNull(Me!IPEI_SARI) Then Krit = Krit & " AND IPEI_SARI LIKE '" & Me!IPEI_SARI & "*'"
If Not IsNull(Me!Kategorie) Then Krit = Krit & " AND Kategorie LIKE '" & Me!Kategorie & "*'"
If Not IsNull(Me!DatumStart And Me!DatumEnde) Then Krit = "InstDatum BETWEEN " & strDatumStart & " AND " & strDatumEnde & ""
SQL = "SELECT * FROM Bestand "
If Krit <> "" Then
Krit = Mid(Krit, 5)
SQL = SQL & "WHERE " & Krit
End If
End Sub
Hallo,
der Code ist nicht die Klick-Prozedur des Such-Buttons...
Hast Du nun auch alle anderen genannten Stellen nachgeprüft??
Das:
If Not IsNull(Me!DatumStart And Me!DatumEnde) then
würde ich noch in
If Not (IsNull(Me!DatumStart) or Isnull(Me!DatumEnde)) then
ändern.
Hallo,
mein Vorschlag hat auf dem Code in deinem Startbeitrag aufgesetzt.
Der schaut aber jetzt ein wenig anders aus - in deinem letzten Beitrag.
So passt natürlich die Zeile mit dem InstDatum NICHT!
Private Sub MakeSQL()
Dim strDatumStart As String, strDatumEnde As String, TestVon As Double, TestBis As Double, Tmp1 As String, Tmp As String, Itm
Krit = ""
strDatumStart = Format(Me!DatumStart, "\#yyyy\-mm\-dd\#")
strDatumEnde = Format(Me!DatumEnde, "\#yyyy\-mm\-dd\#")
If Not IsNull(Me!Firma) Then Krit = Krit & " AND Firma LIKE '" & Me!Firma & "*'"
If Not IsNull(Me!Artikelname) Then Krit = Krit & " AND Artikelname LIKE '" & Me!Artikelname & "*'"
If Not IsNull(Me!Seriennr) Then Krit = Krit & " AND Seriennr LIKE '" & Me!Seriennr & "*'"
If Not IsNull(Me!MAC) Then Krit = Krit & " AND MAC LIKE '" & Me!MAC & "*'"
If Not IsNull(Me!IPEI_SARI) Then Krit = Krit & " AND IPEI_SARI LIKE '" & Me!IPEI_SARI & "*'"
If Not IsNull(Me!Kategorie) Then Krit = Krit & " AND Kategorie LIKE '" & Me!Kategorie & "*'"
If Not (IsNull(Me!DatumStart) Or Isnull(Me!DatumEnde)) then
Krit = " AND InstDatum BETWEEN " & strDatumStart & " AND " & strDatumEnde
End If
SQL = "SELECT * FROM Bestand "
If Krit <> "" Then
Krit = Mid(Krit, 5)
SQL = SQL & "WHERE " & Krit
End If
End Sub
Achte darauf, dass die Gänsefüße dort stehen wie sie oben zu sehen sind!
HTH
p.s. hoffe, Bestand ist eine Tabelle und keine Abfrage ... sonst könnte sich der Parameteraufruf auch von dort anschleichen
Danke! Es klappt. War es jetzt das fehlende AND??
Hallo,
2 Dinge:
1. in deinem Startbeitrag hattest du die Datumsfelder zum Vergleich OHNE die notwendige Konvertierung ins US / ISO - Format verwendet.
2. Nachdem der Code unbekannterweise NICHT vollständig war, hatte ich angenommen, dass es sich bei der Art, wie die SQL zusammengesetzt wurde um einen Schreibfehler handelt und habe daher den Code umgeschrieben.
Nach dem Letzten Posting aber war klar woran es dann krankte - der SQL-String wurde fehlerhaft zusammengesetzt wodurch beim Abarbeiten des Codes offensichtlich Inst und Datum getrennt wurden und Datum mit einer Parameterabfrage 'versorgt' werden sollte.
Richtig zusammengesetzt und ordnungsgemäß formatierte Datumsübergaben lassen dann Wohlgefallen aufkommen ;) :D
Bitte den Thread in DEINEM ERSTEN Beitrag auf 'gelöst' setzen - DANKE!