online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Mrfivejunior vom 30.01.2020, 22:43 Options

unverträglicher Datentyp

Hallo zusammen,

ich habe wiedermal ein Problem. Ich habe einen Filter kreiert, der sich durch die Eingabe in mehrere Textfelder auf einem Formular zusammenbauen lässt. Wenn ich nun aber den Filter anwenden möchte kommt die Fehlermeldung: Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich. Mein code ist:

Option Compare Database

Private Sub Filter2_setzen()

Dim DatVon As Date
Dim DatBis As Date
Dim Filterbedingung2 As String

If Not IsNull(Me!Bearbeiter) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "Bearbeiter = " _
& Chr(34) & Me!Bearbeiter & Chr(34)
End If

If Not IsNull(Me!DatVon) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "eingangsdatum >= " _
& Chr(34) & Me!DatVon & Chr(34)
End If

If Not IsNull(Me!DatBis) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "eingangsdatum <= " _
& Chr(34) & Me!DatBis & Chr(34)
End If


Me.Filter = Filterbedingung2
Me.FilterOn = True

End Sub

Private Sub Bearbeiter_AfterUpdate()
Call Filter2_setzen
End Sub

Private Sub DatVon_AfterUpdate()
Call Filter2_setzen
End Sub

Private Sub DatBis_AfterUpdate()
Call Filter2_setzen
End Sub

Ich denk mal man muss die Textfelder als Datum deklarieren. Aber ich hab da keine Ahnung wie des funktioniert. Ich bin im VBA ein rechter Anfänger.
Der Filter soll durch die beiden Textfelder DatVon bzw. DatBis mehrerer Daten(Datums) vergleichen. Das Steuerelement ist in der Tabelle als Datum/Uhrzeit definiert.


Antwort schreiben

Antwort 1 von Marie vom 31.01.2020, 03:45 Options

Zitat:
If Not IsNull(Me!DatVon) Then


stattdessen schreibst Du "If isDate"

Gruß Marie

Antwort 2 von Mrfivejunior vom 31.01.2020, 08:06 Options

Also ich hab jetzt

If IsDate(Me!DatBis) Then

geschrieben, aber es kommt immer noch der selbe Fehler.

Gruß Tobias

Antwort 3 von lorf55 vom 31.01.2020, 15:47 Options

Wenn
[quote]Dim DatVon As Date
Dim DatBis As Date[/quote]

denn ist:
 [quote]Filterbedingung2 = Filterbedingung2 & "eingangsdatum >= " _
& Chr(34) & Me!DatVon & Chr(34)[/quote]

falsch, weil Date kein String ist (chr(34) steht für " ).

Die Access2000-Hilfe meint dazu:
Formulare!Personal.Filter = "[Einstellungsdatum] >= #" _
 &     Formulare!Personal!Einstellungsdatum & "#"

Antwort 4 von Mrfivejunior vom 31.01.2020, 21:03 Options

Sorry, aber des hat mich leider nicht weiter gebracht. Es kommt immer noch der selbe Fehler.

Antwort 5 von lorf55 vom 01.02.2020, 07:09 Options

Du hast also beide Bedingungungen so stehen:
Filterbedingung2 = Filterbedingung2 & "eingangsdatum >= " _
& "#" & Me!DatVon & "#"


 Filterbedingung2 = Filterbedingung2 & "eingangsdatum <= " _
& "#" & Me!DatBis & "#"


Und was steht in Me!DatVon und Me!DatBis?
Du kannst ja mal einen Haltepunkt setzen (auf den linken Rand im VBA-Editor klicken) und denn starten und ab Haltepunkt bis Fehler mit F8 durchgehen. Und wenn du mit der Maus über der Variablen bist, zeigt er dir den aktuellen Wert. Oder du schaust ihn dir im Überwachungsfenster an.

Antwort 6 von Mrfivejunior vom 01.02.2020, 08:08 Options

In Me!DatVon bzw. Me!DatBis steht dann zum Beispiel das Datum 01.01.2008. So wie ich es im Tesxtfeld auf dem Formular eingegeben habe.

Antwort 7 von lorf55 vom 01.02.2020, 10:28 Options

Und in welcher Zeile kommt der Laufzeitfehler und wie sind die relevanten Werte dann?

Antwort 8 von Mrfivejunior vom 01.02.2020, 13:17 Options

Hallo lorf55,

danke für deine Hilfe, aber ich hab mein Problem schon gelöst.

Ich hab nun

Dim Filterbedingung2 As String

If Not IsNull(Me!Bearbeiter) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "Bearbeiter = " _
& Chr(34) & Me!Bearbeiter & Chr(34)
End If

If IsDate(Me!DatVon) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "eingangsdatum >= " & Format(Me!DatVon, "\#yyyy\-mm\-dd\ hh:nn:ss#")
End If

If IsDate(Me!DatBis) Then
If Filterbedingung2 <> "" Then
Filterbedingung2 = Filterbedingung2 & " AND "
End If
Filterbedingung2 = Filterbedingung2 & "eingangsdatum <= " & Format(Me!DatBis, "\#yyyy\-mm\-dd\ hh:nn:ss#")
End If


geschrieben.

Gruß Tobias

Ähnliche Themen

Zahl in Text konvertieren
riseli  29.01.2007 - 244 Hits - 2 Antworten

VBA Datentyp - 2 Nachkommastellen
Catze  22.08.2007 - 32 Hits - 2 Antworten

datei öffnen
hansel_H  13.12.2007 - 71 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026