我正在尝试从TABLE 1
访问特定值(CompanyNr
)并将其存储到变量中。稍后使用它来访问 TABLE 2
我的表格示例:
TABLE 1 (Contacts):
ID , CompanyNr , Contact
TABLE 2 (Companies):
CompanyNr , Company
我有一个用于联系人的ComboBox
。当我从 ComboBox
中选择某人时,我想自动过滤掉所选联系人所在的公司。
我尝试过这样的:
我的代码:
CompNr = "SELECT [Contacts].[ID], [Contacts].[CompanyNr] FROM Contacts " & _
"WHERE [Contacts].[ID] = " & ContactNrCombo.Value & " ORDER BY [Contact];"
MsgBox "Company Nr:" & CompNr
sq11 = "SELECT [Companies].[CompanyNr], [Companies].[Company] FROM Companies " & _
"WHERE [Companies].[CompanyNr] = " & CompNr & "ORDER BY [Company]; "
但是 MsgBox 说:
CompNr = SELECT [Contacts].[ID], [Contacts].[CompanyNr] FROM Contacts WHERE [Contacts].[ID] = 255 ORDER BY [Contact]
但是我需要获取 CompanyNr 的某个值(例如 50),以便我可以在其他 SQL 语句中使用它来从 TABLE 2
中进行过滤。
我对 SQL 语句不熟悉,我刚刚在互联网上找到了上面的示例,并认为我可以使用它。但效果并不好。
如有任何帮助,我们将不胜感激
最佳答案
您可以尝试以下操作,
Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open "Provider=..." 'Your Connectionstring
rs.Open "SELECT [Contacts].[ID], [Contacts].[CompanyNr] FROM Contacts " & _
"WHERE [Contacts].[ID] = " & ContactNrCombo.Value & " ORDER BY [Contact]", con, 1,3
'Assuming there is only one company number per contact
rs.MoveFirst
CompNr = rs.Fields("CompanyNr").Value
rs.Open "SELECT [Companies].[CompanyNr], [Companies].[Company] FROM Companies " & _
"WHERE [Companies].[CompanyNr] = " & CompNr & "ORDER BY [Company]", con, 1,3
'If you want to paste the second sql query in excel use this
Sheets("Sheet1").Range("A1").CopyFromRecordset rs
rs.Close
con.Close
Set con = Nothing
关于mysql - 如何在 VBA 中使用 SQL 从表中检索特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174497/