@@ -403,7 +403,7 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
403403                              ByVal  RelationalOperator As  SqlRelationalOperators , _ 
404404                              ByVal  FilterValue As  Variant , _ 
405405                     Optional  ByVal  FilterValue2 As  Variant  = Null , _ 
406-                      Optional  ByVal  IgnoreValue As  Variant  =  Null , _ 
406+                      Optional  ByVal  IgnoreValue As  Variant , _ 
407407                     Optional  ByVal  DisableIgnoreNullValue As  Boolean  = False ) As  String 
408408
409409   Dim  FilterValueString As  String 
@@ -412,13 +412,20 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
412412   Dim  Criteria1 As  String 
413413   Dim  Criteria2 As  String 
414414   Dim  TempArr() As  String 
415- 
415+     
416416   If  (RelationalOperator And  [_IgnoreAll]) = [_IgnoreAll] Then 
417417      Exit Function 
418418   End If 
419419
420+    If  IsMissing(IgnoreValue) Then 
421+       If  Not  DisableIgnoreNullValue Then 
422+          DisableIgnoreNullValue = True 
423+       End If 
424+       IgnoreValue = Null 
425+    End If 
426+    
420427   If  Not  IsArray(FilterValue) Then 
421-       
428+    
422429      If  FilterValue = "{NULL}"  Or  FilterValue = "{LEER}"  Or  FilterValue = "{EMPTY}"  Then 
423430         FilterValue = Null 
424431         DisableIgnoreNullValue = True 
@@ -536,9 +543,9 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
536543            If  (RelationalOperator And  SQL_GreaterThan) = SQL_GreaterThan Then 
537544               ' nichts ändern => >= DataValue  / SQL_Add_WildCardSuffix ist nicht logisch 
538545            Else  ' ganzen Tag berücksichtigen FieldName >= DateValue and FieldName < DateAdd("d", 1, FilterValue)) 
539-                BuildCriteria = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue) & _ 
546+                BuildCriteria = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue, , ,  False ) & _ 
540547                               SqlAndConcatString & _ 
541-                                BuildCriteria(FieldName, FieldDataType, SQL_LessThan, DateAdd("d" , 1 , CDate(CLng(FilterValue))))
548+                                BuildCriteria(FieldName, FieldDataType, SQL_LessThan, DateAdd("d" , 1 , CDate(CLng(FilterValue))), , ,  False )
542549               Exit Function 
543550            End If 
544551         Else 
@@ -563,11 +570,11 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
563570                  Else 
564571                     FilterValue2 = Replace(FilterValue, "*" , vbNullString)
565572                  End If 
566-                   Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan, GetNextDigitNumber(FilterValue, True ))
567-                   Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal, FilterValue2)
573+                   Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan, GetNextDigitNumber(FilterValue, True ), ,  Null ,  False )
574+                   Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal, FilterValue2, ,  Null ,  False )
568575               Else 
569-                   Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue)
570-                   Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, GetNextDigitNumber(FilterValue))
576+                   Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue, ,  Null ,  False )
577+                   Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, GetNextDigitNumber(FilterValue), ,  Null ,  False )
571578               End If 
572579               BuildCriteria = Criteria1 & SqlAndConcatString & Criteria2
573580               Exit Function 
@@ -793,7 +800,7 @@ Private Function TryBuildArrayCriteria(ByRef FieldName As String, ByVal FieldDat
793800
794801   'Kriterien über Or verbinden 
795802   For Each  itm In  FilterValue
796-       ItmCriteria = BuildCriteria(FieldName, FieldDataType, RelationalOperator, itm, , IgnoreValue)
803+       ItmCriteria = BuildCriteria(FieldName, FieldDataType, RelationalOperator, itm, , IgnoreValue,  False )
797804      If  Len(ItmCriteria) > 0  Then 
798805         Criteria = Criteria & SqlOrConcatString & ItmCriteria
799806      End If 
@@ -821,8 +828,16 @@ Private Function TryBuildInCriteria(ByRef FieldName As String, ByVal FieldDataTy
821828
822829   If  IsArray(FilterValue) Then 
823830      FilterValueString = GetValueArrayString(FilterValue, FieldDataType, "," , IgnoreValue)
824-    ElseIf  VarType(FilterValue) = vbString Then  ' Value ist bereits die Auflistung als String 
825-       FilterValueString = FilterValue
831+    ElseIf  VarType(FilterValue) = vbString Then 
832+       If  FieldDataType = SQL_Text Then 
833+          If  Left(FilterValue, 1 ) = "'"  Then  ' schon als SQL-Text im FilterString 
834+             FilterValueString = FilterValue
835+          Else 
836+             FilterValueString = ConvertToSqlText(FilterValue, FieldDataType)
837+          End If 
838+       Else 
839+          FilterValueString = FilterValue ' Value ist bereits in der Auflistung als String 
840+       End If 
826841   Else 
827842      FilterValueString = ConvertToSqlText(FilterValue, FieldDataType)
828843   End If 
@@ -865,8 +880,8 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
865880   End If 
866881
867882   If  (RelationalOperator And  SQL_Not) = SQL_Not Then  'Bedingung umdrehen 
868-       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, FilterValue, , IgnoreValue)
869-       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan, FilterValue2, , IgnoreValue)
883+       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, FilterValue, , IgnoreValue,  False )
884+       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan, FilterValue2, , IgnoreValue,  False )
870885      Criteria = Criteria1 & SqlAndConcatString & Criteria2
871886      TryBuildBetweenCriteria = True 
872887      Exit Function 
@@ -877,8 +892,8 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
877892         FilterValue2 = Mid(FilterValue2, 3 )
878893      ElseIf  FilterValue2 Like  "<*"  Then 
879894         FilterValue2 = Mid(FilterValue2, 2 )
880-          Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue)
881-          Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, FilterValue2)
895+          Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue, ,  Null ,  False )
896+          Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan, FilterValue2, ,  Null ,  False )
882897         Criteria = Criteria1 & SqlAndConcatString & Criteria2
883898         TryBuildBetweenCriteria = True 
884899         Exit Function 
@@ -892,14 +907,14 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
892907      FilterValue = FilterValue2
893908      FilterValue2 = GetCheckedIgnoreValue(IgnoreValue)
894909   ElseIf  (FieldDataType And  SQL_Date) = SQL_Date And  (RelationalOperator And  SQL_Add_WildCardSuffix) Then 
895-       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue)
896-       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal + SQL_Add_WildCardSuffix, FilterValue2)
910+       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue, ,  Null ,  False )
911+       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal + SQL_Add_WildCardSuffix, FilterValue2, ,  Null ,  False )
897912      Criteria = Criteria1 & SqlAndConcatString & Criteria2
898913      TryBuildBetweenCriteria = True 
899914      Exit Function 
900915   ElseIf  (FieldDataType And  SQL_Numeric) = SQL_Numeric And  (RelationalOperator And  SQL_Add_WildCardSuffix) Then 
901-       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue)
902-       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal + SQL_Add_WildCardSuffix, FilterValue2)
916+       Criteria1 = BuildCriteria(FieldName, FieldDataType, SQL_GreaterThan + SQL_Equal, FilterValue, ,  Null ,  False )
917+       Criteria2 = BuildCriteria(FieldName, FieldDataType, SQL_LessThan + SQL_Equal + SQL_Add_WildCardSuffix, FilterValue2, ,  Null ,  False )
903918      Criteria = Criteria1 & SqlAndConcatString & Criteria2
904919      TryBuildBetweenCriteria = True 
905920      Exit Function 
@@ -920,7 +935,7 @@ Private Function GetCheckedIgnoreValue(ByVal IgnoreValue As Variant) As Variant
920935End Function 
921936
922937Private  Function  NullFilterOrEmptyFilter (ByVal  FieldName As  String , ByVal  FieldDataType As  SqlFieldDataType , _ 
923-                                            ByVal  RelationalOperator As  SqlRelationalOperators , _ 
938+                                          ByVal  RelationalOperator As  SqlRelationalOperators , _ 
924939                                         ByVal  Value As  Variant , ByVal  IgnoreValue As  Variant , _ 
925940                                         ByRef  NullFilterString As  String , _ 
926941                                Optional  ByVal  DisableIgnoreNullValue As  Boolean  = False ) As  Boolean 
0 commit comments