2014-11-27 6 views
0

Я пытаюсь получить значение (CompanyNr) из TABLE 1 и сохранить его в переменной. Для того, чтобы позже использовать его для доступа названия компании из TABLE 2Как получить определенное значение из таблицы с SQL в VBA

МОЕЙ ТАБЛИЦЫ ПРИМЕРЫ:

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, я просто нашел приведенный выше пример в Интернете и думал, что смогу его использовать. Но он не работал хорошо.

Любая помощь будет оценена

ответ

0

Вы можете попробовать что-то вроде следующего,

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 
+0

Спасибо за совет! Но я нашел более гладкое решение - я использовал DLookup! –

Смежные вопросы