@@ -403,7 +403,7 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
403
403
ByVal RelationalOperator As SqlRelationalOperators , _
404
404
ByVal FilterValue As Variant , _
405
405
Optional ByVal FilterValue2 As Variant = Null , _
406
- Optional ByVal IgnoreValue As Variant = Null , _
406
+ Optional ByVal IgnoreValue As Variant , _
407
407
Optional ByVal DisableIgnoreNullValue As Boolean = False ) As String
408
408
409
409
Dim FilterValueString As String
@@ -412,13 +412,20 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
412
412
Dim Criteria1 As String
413
413
Dim Criteria2 As String
414
414
Dim TempArr() As String
415
-
415
+
416
416
If (RelationalOperator And [_IgnoreAll]) = [_IgnoreAll] Then
417
417
Exit Function
418
418
End If
419
419
420
+ If IsMissing(IgnoreValue) Then
421
+ If Not DisableIgnoreNullValue Then
422
+ DisableIgnoreNullValue = True
423
+ End If
424
+ IgnoreValue = Null
425
+ End If
426
+
420
427
If Not IsArray(FilterValue) Then
421
-
428
+
422
429
If FilterValue = "{NULL}" Or FilterValue = "{LEER}" Or FilterValue = "{EMPTY}" Then
423
430
FilterValue = Null
424
431
DisableIgnoreNullValue = True
@@ -536,9 +543,9 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
536
543
If (RelationalOperator And SQL_GreaterThan) = SQL_GreaterThan Then
537
544
' nichts ändern => >= DataValue / SQL_Add_WildCardSuffix ist nicht logisch
538
545
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 ) & _
540
547
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 )
542
549
Exit Function
543
550
End If
544
551
Else
@@ -563,11 +570,11 @@ Public Function BuildCriteria(ByVal FieldName As String, ByVal FieldDataType As
563
570
Else
564
571
FilterValue2 = Replace(FilterValue, "*" , vbNullString)
565
572
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 )
568
575
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 )
571
578
End If
572
579
BuildCriteria = Criteria1 & SqlAndConcatString & Criteria2
573
580
Exit Function
@@ -793,7 +800,7 @@ Private Function TryBuildArrayCriteria(ByRef FieldName As String, ByVal FieldDat
793
800
794
801
'Kriterien über Or verbinden
795
802
For Each itm In FilterValue
796
- ItmCriteria = BuildCriteria(FieldName, FieldDataType, RelationalOperator, itm, , IgnoreValue)
803
+ ItmCriteria = BuildCriteria(FieldName, FieldDataType, RelationalOperator, itm, , IgnoreValue, False )
797
804
If Len(ItmCriteria) > 0 Then
798
805
Criteria = Criteria & SqlOrConcatString & ItmCriteria
799
806
End If
@@ -821,8 +828,16 @@ Private Function TryBuildInCriteria(ByRef FieldName As String, ByVal FieldDataTy
821
828
822
829
If IsArray(FilterValue) Then
823
830
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
826
841
Else
827
842
FilterValueString = ConvertToSqlText(FilterValue, FieldDataType)
828
843
End If
@@ -865,8 +880,8 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
865
880
End If
866
881
867
882
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 )
870
885
Criteria = Criteria1 & SqlAndConcatString & Criteria2
871
886
TryBuildBetweenCriteria = True
872
887
Exit Function
@@ -877,8 +892,8 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
877
892
FilterValue2 = Mid(FilterValue2, 3 )
878
893
ElseIf FilterValue2 Like "<*" Then
879
894
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 )
882
897
Criteria = Criteria1 & SqlAndConcatString & Criteria2
883
898
TryBuildBetweenCriteria = True
884
899
Exit Function
@@ -892,14 +907,14 @@ Private Function TryBuildBetweenCriteria(ByRef FieldName As String, ByVal FieldD
892
907
FilterValue = FilterValue2
893
908
FilterValue2 = GetCheckedIgnoreValue(IgnoreValue)
894
909
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 )
897
912
Criteria = Criteria1 & SqlAndConcatString & Criteria2
898
913
TryBuildBetweenCriteria = True
899
914
Exit Function
900
915
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 )
903
918
Criteria = Criteria1 & SqlAndConcatString & Criteria2
904
919
TryBuildBetweenCriteria = True
905
920
Exit Function
@@ -920,7 +935,7 @@ Private Function GetCheckedIgnoreValue(ByVal IgnoreValue As Variant) As Variant
920
935
End Function
921
936
922
937
Private Function NullFilterOrEmptyFilter (ByVal FieldName As String , ByVal FieldDataType As SqlFieldDataType , _
923
- ByVal RelationalOperator As SqlRelationalOperators , _
938
+ ByVal RelationalOperator As SqlRelationalOperators , _
924
939
ByVal Value As Variant , ByVal IgnoreValue As Variant , _
925
940
ByRef NullFilterString As String , _
926
941
Optional ByVal DisableIgnoreNullValue As Boolean = False ) As Boolean
0 commit comments