collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 87
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13972
  • stats Beiträge insgesamt: 66528
  • stats Themen insgesamt: 8970
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Problem mit Suchfunktion in Formular über VBA-Code  (Gelesen 68 mal)

Offline dobby110

  • Access-Profi
  • **
  • Beiträge: 119
Problem mit Suchfunktion in Formular über VBA-Code
« am: Juli 04, 2018, 11:31:56 »
Hallo zusammen,

ich habe ein kleines Problem mit einem Suchformular, welches ich nutze. Und zwar betrifft es Case 6, speziell der Teil

              Else
                Criteria = Criteria & FieldName & " Like """

Ich habe ein Wiedervorlagedatum. Dieses ist entweder befüllt oder nicht befüllt, wenn es kein Doing mehr gibt.
Jetzt will ich einmal nach allen Datensätzen suchen, welche ein Wiedervorlagedatum haben ... --> das funktioniert auch
und dann will ich nur die Datensätze filtern, wo kein Datum befüllt ist. Aber ich schaffe es nicht, dass mir diese Datensätze angezeigt werden. Hat jemand eine Idee wie ich mein Problem gelöst bekomme?

Habe es auch mit folgenden Kombinationen versucht:
Else
Criteria = Criteria & FieldName & " Like IsNull"
Else
Criteria = Criteria & FieldName & " Like Null"

funktioniert aber auch nicht.

Kurios ist, dass beim Öffnen des Formulars alle Datensätze erst einmal angezeigt werden. So lange ich das Suchfeld nicht antaste, funktioniert die Suche und er wirft weiterhin alle Datensätze raus. Aber sobald ich einmal das Häkchen aktiviert habe, funktioniert nur noch die Suche nach Datensätzen mit Wiedervorlagedatum.

Hier der gesamte VBA Code meiner Suche:
Problem besteht wie bereits beschrieben für Case 6 'befüllt/nicht befüllt

Public Sub SQLString(FieldValue As Variant, FieldName As String, _
                     Criteria As String, ArgCount As Integer, _
                     Typ As Integer, Optional bAnd As Boolean = True)
    '*************************************************************************
    'In dieser Prozedur (Sub) muß und darf nichts geändert werden
    '*************************************************************************
    ' Erstelle Kriterien für die WHERE-Klausel.
    If Nz(FieldValue, "") <> "" Then
        If bAnd Then
            ' Füge "Und" hinzu, falls andere Kriterien vorhanden sind.
            If ArgCount > 0 Then Criteria = Criteria & " AND "
          Else
            ' Füge "Oder" hinzu, falls andere Kriterien vorhanden sind.
            If ArgCount > 0 Then Criteria = Criteria & " OR "
        End If
        Select Case Typ
          Case 1 'Datum
            Criteria = Criteria & FieldName & "= #" & _
                       Format(CDate(FieldValue), "mm-dd-yyyy") & "#"
          Case 2 'String Like
            Criteria = Criteria & FieldName & " Like '*" & FieldValue & "*'"
          Case 3 ' Zahl
            Criteria = Criteria & FieldName & " = " & Str(FieldValue)
                                 'Fehlendes = eingefuegt Willi Wipp 2004.10.07
                          'Fehlendes Str(...) eingefuegt Willi Wipp 2007.08.07
          Case 4 'String =
            Criteria = Criteria & FieldName & " = '" & FieldValue & "'"
          Case 5 'Ja/nein
            If FieldValue = "Ja" Or FieldValue = "True" Or _
               FieldValue = True Then
                Criteria = Criteria & FieldName & " = -1"
              Else
                Criteria = Criteria & FieldName & " = 0"
            End If
           
          Case 6 'befüllt/nicht befüllt
            If FieldValue = "Ja" Or FieldValue = "True" Or _
               FieldValue = True Then
                Criteria = Criteria & FieldName & " Like '*" & "*'"
              Else
                Criteria = Criteria & FieldName & " Like """
             
            End If
        End Select
        '  Inkrementiere die Zahl der Argumente.
        ArgCount = ArgCount + 1
    End If
End Sub
Private Function Filterbedingung() As String
    Dim ArgCount As Integer
   
    ' Initialisiere die Argumentenzahl.
    ArgCount = 0
    myCriteria = ""
    '*************************************************************************
    ' Nur hier muß man die Zeilen anpassen:
    ' Variable1 = Feldname im Formular in dem das Suchwort eingegeben wird
    ' Variable2 = Feldname im Formular der gefiltert werden soll
    '                                                 (Feld aus der Datenbank)
    ' Variable3 = Typ zum Angeben des Datenfeldes
    '             1 = Datum
    '             2 = String, alle die das Suchwort entahlten, egal wo
    '             3 = Zahl
    '             4 = String, findet nur die die genau übereinstimmen
    '             5 = ja/nein vom Typ Boolen
    ' Optional bAnd = Hier kann man dann noch angeben ob man die Kriterien mit
    '                 AND (True) oder OR (False) verknüpfen möchte.
    '                 Wenn Argument bAnd weggelassen => mit AND verküpft.
    ' Beispiel:
    ' SQLString Me!Sucheingabefeld, "Datenfeld", mycriteria, ArgCount, _
    '           2, False
    ' => Hier wird mit OR (Oder) verknuept.
    ' Beliebig erweiterbar, wenn man beispielsweise 5 Felder filtern
    ' will muß man die folgende Zeile gerade 5 mal kopieren und anpassen
    '*************************************************************************
    ' SQLString Variable1, Variable2, mycriteria, ArgCount, Variable3
    '*************************************************************************
   
 
    SQLString Me!sucheValuta, "Valuta", myCriteria, ArgCount, 1
    SQLString Me!sucheOLY, "[Olympic Geschäfts-Nr]", myCriteria, ArgCount, 4
    SQLString Me!sucheSCD, "SCD", myCriteria, ArgCount, 4
    SQLString Me!sucheDIAMOS, "DIAMOS", myCriteria, ArgCount, 4
    SQLString Me!sucheInvestment, "[Name Investment]", myCriteria, ArgCount, 3
    SQLString Me!sucheID, "[Vorgang]", myCriteria, ArgCount, 3
    SQLString Me!sucheWV, "[Wiedervorlage]", myCriteria, ArgCount, 1
    SQLString Me!suchegebucht, "[gebucht]", myCriteria, ArgCount, 5
    SQLString Me!sucheBestätigt, "[Bestätigt]", myCriteria, ArgCount, 5
    SQLString Me!sucheNURWV, "[Wiedervorlage]", myCriteria, ArgCount, 6

   
   
   
    ' Falls kein Kriterium spezifiziert wurde, gebe alle Datensätze zurück.
    If myCriteria = "" Then myCriteria = "True"
    Filterbedingung = myCriteria
End Function



Private Sub BefehlSuche_Click()

    Me.Filter = Filterbedingung()
    Me.FilterOn = True

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7283
Re: Problem mit Suchfunktion in Formular über VBA-Code
« Antwort #1 am: Juli 04, 2018, 11:49:42 »
Hallo,
so:
Criteria = Criteria & FieldName & " Is Null"
Gruß
Klaus