-
Notifications
You must be signed in to change notification settings - Fork 6
/
SQLConditionSelect.cls
executable file
·74 lines (54 loc) · 2 KB
/
SQLConditionSelect.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "SQLConditionSelect"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
' ___________________________________________________
'
' © Hi-Integrity Systems 2007. All rights reserved.
' www.hisystems.com.au - Toby Wicks
' ___________________________________________________
'
Option Explicit
'This class allows a conditional value generated from an SELECT statement to be added as an SQL condition.
'i.e. ... WHERE (SELECT MAX(StockOnHand) FROM Product WHERE Supplier.ProductID = Product.ProductID) > 1000
Private pvValue As Variant
Public SelectSet As SQLSelect
Public compare As SQLComparisonOperatorEnum
Public Property Let Value(ByVal vValue As Variant)
SQLConditionValue vValue, pvValue
End Property
Public Property Get Value() As Variant
If VarType(pvValue) = vbObject Then
Set Value = pvValue
Else
Value = pvValue
End If
End Property
Friend Property Get SQL(ByVal eConnectionType As ConnectionTypeEnum) As String
If Me.SelectSet Is Nothing Then
RaiseError dboErrorGeneral, "SelectSet not set."
End If
CompareValuePairAssertValid Me.compare, pvValue
SelectSet.ConnectionType = eConnectionType
SQL = Condition(SelectSet, Me.compare, Me.Value, eConnectionType)
End Property
Private Function Condition( _
ByVal objSelect As SQLSelect, _
ByVal eCompare As SQLComparisonOperatorEnum, _
ByVal vValue As Variant, _
ByVal eConnectionType As ConnectionTypeEnum) As String
SQLConvertBooleanValue vValue, eCompare
Condition = _
"(" & objSelect.SQL & ") " & _
SQLConvertCompare(eCompare) & " " & _
SQLConvertValue(vValue, eConnectionType)
End Function