Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Gisi2 am September 16, 2024, 16:00:25

Titel: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Gisi2 am September 16, 2024, 16:00:25
Guten Tag

Ich bin kompletter Access-Neuling :(

Soweit hab ich schonmal eine Tabelle mit Daten angelegt. Danach ein Formular und darin 2 Kombinationsfelder. Bei den Kombifeldern kann man was auswählen und dann über einen Button die Liste im Formular nach den Kombifeldern sortieren lassen.

Den Code hab ich dank Google gefunden und konnte den anpassen. Soweit funktioniert alles, solange ich bei der Tabelle den Felddatentyp auf kurzer Text lasse.

Jetzt müsste ich bei einem Feld aber eben etwas berechnen. Das Feld nächster_Prüfung soll aus Feld letzte_Prüfung und Prüfintervall berechnet werden. Das ist soweit auch kein Problem, nur kann ich dann nicht mehr filtern weil es wahrscheinlich kein Text mehr sondern ein berechnet es Feld ist.

Bei folgendem Code erhalte ich den Fehler:
Sub BuildFiltStr()
  thefilter = ""
  If Me!boxPrüfung <> "" Then
      thefilter = "[nächste_Prüfung] = '" & Me!boxPrüfung & "'"
  End If
  If Me!boxPrüfer <> "" Then
      If thefilter = "" Then
        thefilter = "[Prüfer] = '" & Me!boxPrüfer & "'"
      Else
        thefilter = thefilter & " AND [Prüfer] = '" & Me!boxPrüfer & "'"
      End If
  End If
'    MsgBox thefilter
  If thefilter = "" Then
      Me.Filter = ""
      Me.FilterOn = False
  Else
      Me.Filter = thefilter
    Me.FilterOn = True
  End If
End Sub


Kann ich hier thefilter = "[nächste_Prüfung] = '" & Me!boxPrüfung & "'" irgendwo ändern, dass es klar ist, dass das kein Text sondern ein berechnetes Feld mehr ist?


Wäre super glücklich, wenn mir da jemand helfen könnte. Hab schon alles Kombinationen mit ' und "" löschen durch, tut trotzdem nicht.

herzlichen Dank!

PS: hab ich vergessen, vielleicht ist das auch noch wichtig. Das Kombinationsfeld der letzten Prüfung lasse ich über bei Fokuserhalt mit dem Code Me.boxPrüfung.RowSource = "SELECT DISTINCT nächste_Prüfung FROM DATA;" füllen.
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: MzKlMu am September 16, 2024, 16:51:57
Hallo,
das berechnete Feld spielt keine Rolle. Aber wie berechnet wird. Also zeige bitte mal die Berechnung.
In welcer Zeile kommt der Fehler ?

ZitatIf Me!boxPrüfer <> "" Then
Wo kommt hier der Leerstring ("") her ?

Im Regelfall kann es keine Felder geben mit "". Leere Felder sind NULL (=nix)

PS:
Bitte verwende für Codedarstellungen die Codetags. Ich hab das oben in Deinem Beitrag gemacht.
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Knobbi38 am September 16, 2024, 18:17:58
Hallo Gisi,

du kannst selbstredend nur auf in der Datenquelle des Formulars enthaltenen Feldern filtern. Ein Filterausdruck kann aber durchaus einen Berechnung mit diesen Feldern enthalten und dann als Filter für die Datenquelle benutzt werden. Allerdings muß das Ergebnis der Berechnung mit dem Datentyp des geprüften Feldes übereinstimmen.

Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Gisi2 am September 16, 2024, 19:45:00
Hallo zusammen

Wow, danke für die beiden Einträg! Ich bin dankbar um jeden Hinweis.

Ich lasse das Feld nächste_Prüfung so berechnen: letzte_Prüfung + Prüfungsintervall - das Resultat ist dann eben eine Zahl und da liegt wohl das Problem.

Im Debug-Modus färbt sich bei mir die Zeile
    Me.Filter = thefilter

Ich hab aber gesehen, wenn ich das Tabellenfeld nächste_Prüfung als Text definiere, dann würde es mir keinen Fehler angeben. Deshalb denke ich, dass da wohl das Problem liegt. Jetzt weiss ich bloss nicht, wie ich dem Code sagen kann, dass es sich bei nächste_Prüfung eben nicht um text sondern um eine Zahl handelt.

Ich hab mal ein paar PrintScreens angehängt - vielleicht ists dann verständlicher
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: MzKlMu am September 16, 2024, 19:52:58
Hallo,
bei Zahl statt Text entfallen die Hochkomma.
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Gisi2 am September 16, 2024, 19:58:54
Man Klaus, wärst du jetzt hier, würde ich glatt einen ausgeben. DANKE!
So ne einfache Sache und ich hab Stunden verbraten! HERZLICHEN DANK FÜR DIE HILFE!!!! ich schätze das extrem!

Grüsse und einen schönen Feierabend!

Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Beaker s.a. am September 17, 2024, 12:35:12
Hallo,

Wieso überhaupt "Text"?
Ein Datum ist eine Zahl (Double), auch wenn nur das Jahr verwendet wird.
Ein Prüfer sollte eine ID haben, was auch eine Zahl ist.

gruss ekkehard
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: MzKlMu am September 17, 2024, 12:58:16
Hallo Ekkehard,
wo siehst Du da ein Datum ?
Hier ist nur das Jahr im Spiel, auch das Intervall ist das Jahr.
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Knobbi38 am September 17, 2024, 13:38:20
Hallo Gisi,

hier mal eine kleine Vereinfachung für deine  Routine:
Sub BuildFiltStr()
  Dim theFilter As String
 
  theFilter = ""
 
  If Me!boxPrüfung <> "" Then
      theFilter = " AND [nächste_Prüfung] = " & Me!boxPrüfung
  End If
 
  If Me!boxPrüfer <> "" Then
      theFilter = theFilter & " AND [Prüfer] = '" & Me!boxPrüfer & "'"
  End If
 
  theFilter = Mid$(theFilter, 6)
 
'    MsgBox thefilter
  Me.Filter = theFilter
  Me.FilterOn = (theFilter <> "")
End Sub

und bitte immer "Option Explicit" verwenden!

Gruß
Knobbi38
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Beaker s.a. am September 17, 2024, 17:16:56
Hallo,

@klaus
Spielt doch keine Rolle, - eine Jahreszahl ist auch eine Zahl, wie
der Name schon sagt.
Der Auslöser war
Zitatsolange ich bei der Tabelle den Felddatentyp auf kurzer Text lasse.

@knobbi
Du hättest mich ruhig unterstützen können bezügl. PrüferID
theFilter = theFilter & " AND [Prüfer] = " & Me!boxPrüferDas Kombi gehört entsprechend um-/eingestellt.

gruss ekkehard
Titel: Re: Fehler - Datentypenkonflikt in Kriterienausdruck
Beitrag von: Knobbi38 am September 18, 2024, 12:00:19
@Beaker s.a.

ZitatDu hättest mich ruhig unterstützen können bezügl. PrüferID
Hast recht. Gisi hat auch bereits einen weiteren Thread aufgemacht, wo es um das Thema Kombobox geht. Mir ging es erstmal nur darum, die Logik hinter dem Code etwas zu entzerren.

Grüße Ulrich