-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathc_QueryDesigner_Insert.cls
50 lines (44 loc) · 1.52 KB
/
c_QueryDesigner_Insert.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
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "c_QueryDesigner_Insert"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Private p_Columns As Collection
Private p_Values As Collection
Private p_TableName As String
Private Sub Class_Initialize()
Set p_Columns = New Collection
Set p_Values = New Collection
End Sub
'Value: The name of the database table to insert the values into.
Public Property Let TableName(value As String)
p_TableName = value
End Property
'PARAM (columnName): THE NAME OF THE COLUMN TO BE ADDED TO THE QUERY
'PARAM (columnValue): THE MATCHING VALUE TO BE INSERTED
Public Sub InsertColumn(columnName As String, columnValue As String)
p_Columns.Add columnName
p_Values.Add columnValue
End Sub
'RETURNS THE FORMATTED QUERY WITH ANY OPTIONAL CLAUSES ATTACHED
Public Function GetInsertCommandText() As String
Dim insert As String
insert = "INSERT INTO " & p_TableName & "(" & Join(CollectionToArray(p_Columns), ", ") & ")"
insert = insert & " VALUES(" & Join(CollectionToArray(p_Values), ", ") & ");"
GetInsertCommandText = insert
End Function
'CONVERTS A COLLECTION INTO AN ARRAY
Private Function CollectionToArray(myCol As Collection) As Variant
Dim Result As Variant
Dim cnt As Long
ReDim Result(myCol.Count - 1)
For cnt = 0 To myCol.Count - 1
Result(cnt) = myCol(cnt + 1)
Next cnt
CollectionToArray = Result
End Function