Hallo zusammen,
ich habe eine Abfrage (Ubersicht) aus verschiedenen Tabellen
ich habe ein Formular (Ubersicht) aus dieser Abfrage und in dem Formular habe ich einen TextFeld gebunden an einem Button damit ich im Formular etwas suchen kann.
Dafür habe ich folgenden code erstellt aber funtioniert teilweise nicht richtig, bekomme immer Meldung "Unzulässige verwendung von null" obwohl der TextFeld nicht leer ist.
Was ich suche ist: MER65421354678555
hat das mit VariablenType zutun? Wenn ja, unter welchen VariablenType fällt meine Suchkriterie ?
Übrigens nach RechNr suchen funktioniert ohne Probleme aber nach WinNr leider nicht.
Hier ist der Code:
Private Sub Suchen1_Click()
On Error GoTo Err
Dim query As QueryDef
Dim strWhere As String
Dim Zaehler As Integer
'Nach RechNr suchen
If Not IsNull(Me.SuchText) Then
Dim RechNr As String
RechNr = Me.SuchText
Set query = CurrentDb().QueryDefs("Ubersicht")
query.SQL = "SELECT Rechnung.RechDatum, Rechnung.RechNr, Auto.AutoWIN, Auto.AutoMarke, Auto.AutoModell " & _
"FROM (Rechnung INNER JOIN Auto ON Rechnung.RechNr = Auto.AutoID) INNER JOIN Kunde ON Rechnung.RechNr = Kunde.KunID " & _
"WHERE (((Rechnung.RechNr)= " & RechNr & "));"
Zaehler = DCount(RechNr, "Ubersicht") 'Zählt die Abfrage
MsgBox ("Es sind " & Zaehler & " Datensätze gefunden"), vbOKOnly
If Zaehler = 0 Then
MsgBox "Rechnungsnummer existiert nicht, bitte überprüfen!"
Me.SuchText.SetFocus
Exit Sub
Else
DoCmd.OpenQuery "Ubersicht", acViewNormal, acReadOnly
DoCmd.Close
DoCmd.OpenForm "Ubersicht", acNormal
End If
End If
'Nach WinNr Suchen
If Not IsNull(Me.SuchWIN) Then
Dim WinNr As String
WinNr = Me.SuchWIN
Set query = CurrentDb().QueryDefs("Ubersicht")
query.SQL = "SELECT Rechnung.RechDatum, Rechnung.RechNr, Auto.AutoWIN, Auto.AutoMarke, Auto.AutoModell " & _
"FROM (Rechnung INNER JOIN Auto ON Rechnung.RechNr = Auto.AutoID) INNER JOIN Kunde ON Rechnung.RechNr = Kunde.KunID " & _
"WHERE (((Auto.AutoWIN)= " & WinNr & "));"
Zaehler = DCount(WinNr, "Ubersicht") 'Zählt die Abfrage
MsgBox ("Es sind " & Zaehler & " Datensätze gefunden"), vbOKOnly
If Zaehler = 0 Then
MsgBox "WIN-Nummer existiert nicht, bitte überprüfen!"
Me.SuchText.SetFocus
Exit Sub
Else
DoCmd.OpenQuery "Ubersicht", acViewNormal, acReadOnly
DoCmd.Close
DoCmd.OpenForm "Ubersicht", acNormal
End If
End If
'Ende WIN Suche
Exit_cmd:
Exit Sub
'Fehlermeldung
Err:
MsgBox Err.Description
MsgBox "Eingabe überprüfen!", vbOKOnly
Resume Exit_cmd
End Sub
ok, ich habe mein Fehler gefunden.
Es gab zwei Textfelder zum suchen und einer ist immer leer wenn ich etwas suche deswegen kam die Null-Meldung
aber jetzt kommt etwas anderes als Fehler undzwar in der Zeile:
Zaehler = DCount(WinNr, "Ubersicht") 'Zählt die Abfrage
WinNr hat den Wert "MER65421354678555" im Suchfeld.
die Fehlermeldung lautet: "Der Ausdruck, den Sie als Abfrageparameter eingegeben haben, hat folgenden Fehler verursacht: 'MER65421354678555'
was könnte falsch gelaufen sein?
Vielen Dank im Voraus
Hallo,
wenn es sich bei den
Tabellenfeldern um Datentyp TEXT handelt, (was lt. Beispiel mindestens bei "WinNr" der Fall ist) müssen die Kriterien-Variablen mit Hochkommata umschlossen werden:
Zitat"WHERE (((Rechnung.RechNr)= '" & RechNr & "'));"
"WHERE (((Auto.AutoWIN)= '" & WinNr & "'));"
Zudem ist anzuraten, vorsichtshalber immer
LONG für die Deklaration von Ganzzahlen-Variablen zu benutzen.
Weiterhin: Warum wird nicht gleich der Kriteriums-Parameter der DCount-Funktion benutzt, anstatt zuerst eine Abfrage mit den Kriterien zu generieren?
Und die Kriteriumsvariable (bzw. den Wert) auch für das Tabellenfeld zu nutzen, ist eh unsinnig.
(Abfrage ohne Kriterium):
<Korr>
ZitatZaehler = DCount("*", "Ubersicht", "RechNr= '" & RechNr & "'") 'Zählt die Abfrage
</Korr>
Hallo vielen Dank für die Unterstützung und Tips aber die Meldung ist immer noch da :'(
schaut dann code so aus wenn der gesuchte Datensatz als kurz-Text in der Tabelle formatiert ist:
Zaehler = DCount("*", "Ubersicht", "AutoWIN= " & '"WinNr"' ) 'Zählt die Abfrage
oder so:
Zaehler = DCount("*", "Ubersicht", "AutoWIN= '" & WinNr & "') 'Zählt die Abfrage
Danke
Zaehler = DCount("*", "Ubersicht", "AutoWIN= '" & WinNr & "'")
Hallo,
Danke für die Korrektur ;D
Zitat von: DF6GL am Januar 09, 2022, 11:34:38Danke für die Korrektur ;D
Dein Code war ja richtig.
ok, so funktioniert ohne probleme.
Zaehler = DCount("*", "Ubersicht", "AutoWIN= '" & WinNr & "') 'Zählt die Abfrage
Zitat von: zorlayan am Januar 09, 2022, 11:44:06ok, so funktioniert ohne probleme.
Das kann nicht sein, Dein Code ist falsch!
Kopieren, nicht abtippen!
Hallo,
irgendwo ist ein Missverständnis:
Wenn Du mich meinst:
ZitatDein Code war ja richtig.
Nein, der war falsch. Ich hatte die Hochkommata bei DCount zuerst "unterschlagen", was ich aber vorhin korrigiert habe.
Und bei zorlayan :
Zitatok, so funktioniert ohne probleme.
Zaehler = DCount("*", "Ubersicht", "AutoWIN= '" & WinNr & "'") 'Zählt die Abfrage
fehlt der Gänsefuß vor der schließenden Klammer.
Zitat von: Maxel am Januar 09, 2022, 11:48:12Zitat von: zorlayan am Januar 09, 2022, 11:44:06ok, so funktioniert ohne probleme.
Das kann nicht sein, Dein Code ist falsch!
Kopieren, nicht abtippen!
aber funktioniert wirklich :)