如何将整数值传递到 VBA 中的 SQL 查询
How to pass the integer value into an SQL Query in VBA
我在 a 方法中编写了两个查询,其中一个查询的输出作为输入提供给另一个查询。我尝试将 result(int) 传递到第二个查询的 WHERE 子句中,但出现语法错误。
下面是我的代码:
Private Sub ComboBox1_Change()
On Error GoTo UserForm_Initialize_Err
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim result As Integer
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Users\inkapb\Desktop\EPC Database\EPC TOOL.mdb"
rst.Open "SELECT [Project_Id] FROM [Project Details] WHERE [Project Name] = '" & Me.ComboBox1.Value & " ' ;", _
cnn, adOpenStatic
'rst.MoveFirst
result = rst.Fields(0)
rst.Close
'Here in the below query i want to pass the result of the first query into WHERE clause
rst.Open "SELECT [Product Name] FROM [Project Details] WHERE [Project_Id] = ;" & result, _
cnn, adOpenStatic
rst.MoveFirst
With Me.ComboBox2
.Clear
Do
.AddItem rst![Product Name]
rst.MoveNext
Loop Until rst.EOF
End With
UserForm_Initialize_Exit:
On Error Resume Next
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Exit Sub
UserForm_Initialize_Err:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
Resume UserForm_Initialize_Exit
End Sub
谁能帮我实现这个
任何帮助表示赞赏!
由于额外的 space.
,第一个查询可能找不到要提供给第二个查询的值
变化:
'" & Me.ComboBox1.Value & " ' ;",
收件人:
'" & Me.ComboBox1.Value & "' ;",
此外,将整数转换为字符串。使用 VR46 的查询,虽然添加:
result.ToString()
解决方案是为第二个查询创建新的连接和记录集。
你的分号放错了,现在查询就像
SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] =;8
应该是
WHERE [Project_Id] =8;
这里还有一个下划线 ;" & result, _
也把它去掉。尝试这样的事情
rst.Open "SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] = " & result & " ;", cnn, adOpenStatic, adLockReadOnly
或者干脆
rst.Open "SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] = " & result , cnn, adOpenStatic, adLockReadOnly
我在 a 方法中编写了两个查询,其中一个查询的输出作为输入提供给另一个查询。我尝试将 result(int) 传递到第二个查询的 WHERE 子句中,但出现语法错误。
下面是我的代码:
Private Sub ComboBox1_Change()
On Error GoTo UserForm_Initialize_Err
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim result As Integer
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Users\inkapb\Desktop\EPC Database\EPC TOOL.mdb"
rst.Open "SELECT [Project_Id] FROM [Project Details] WHERE [Project Name] = '" & Me.ComboBox1.Value & " ' ;", _
cnn, adOpenStatic
'rst.MoveFirst
result = rst.Fields(0)
rst.Close
'Here in the below query i want to pass the result of the first query into WHERE clause
rst.Open "SELECT [Product Name] FROM [Project Details] WHERE [Project_Id] = ;" & result, _
cnn, adOpenStatic
rst.MoveFirst
With Me.ComboBox2
.Clear
Do
.AddItem rst![Product Name]
rst.MoveNext
Loop Until rst.EOF
End With
UserForm_Initialize_Exit:
On Error Resume Next
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Exit Sub
UserForm_Initialize_Err:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
Resume UserForm_Initialize_Exit
End Sub
谁能帮我实现这个 任何帮助表示赞赏!
由于额外的 space.
,第一个查询可能找不到要提供给第二个查询的值变化:
'" & Me.ComboBox1.Value & " ' ;",
收件人:
'" & Me.ComboBox1.Value & "' ;",
此外,将整数转换为字符串。使用 VR46 的查询,虽然添加:
result.ToString()
解决方案是为第二个查询创建新的连接和记录集。
你的分号放错了,现在查询就像
SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] =;8
应该是
WHERE [Project_Id] =8;
这里还有一个下划线 ;" & result, _
也把它去掉。尝试这样的事情
rst.Open "SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] = " & result & " ;", cnn, adOpenStatic, adLockReadOnly
或者干脆
rst.Open "SELECT [Product Name]
FROM [Project Details]
WHERE [Project_Id] = " & result , cnn, adOpenStatic, adLockReadOnly