SQL где утверждение с диапазоном: как разделить запятой - PullRequest
0 голосов
/ 05 октября 2018

Я новичок в VBA и пытаюсь получить информацию из диапазона ячеек, которые будут включены в предложение where в выражении sql.Поскольку это предложение where, мне нужно разделить переменные запятой.Например, мой код:

Sub loop()
AB=2
BC=9
Set IDX = Sheets("Sheet2).Cells(AB,BC)

Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset
cn.ConnectionString=PORRI;Trusted_Connection=Yes;APP=Microsoft Office 2010; DATABASE=LKMJ_intm"

cn.open
set rs= New ADODB.Recordset
rs.ActiveConnection=cn

rs.OPEN "SELECT DATE, ID, NAME, INFO FROM xxx WHERE ID in ('"& IDX &")"
r=1
Do While Not rs.EOF
Cells (r,1) = rs.Fields(0)
Cells (r,2) = rs.Fields(1)
Cells (r,3) = rs.Fields(2)
Cells (r,4) = rs.Fields(3)
Cells (r,5) = rs.Fields(4)
r=r+1
Loop
End Sub

Сейчас я не могу создать диапазон, который будет работать в операторе where без запятой.
Спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

Предполагая, что этот фрагмент кода работает на один идентификатор:

rs.OPEN "SELECT DATE, ID, NAME, INFO FROM xxx WHERE ID in ('"& IDX &")"

Что вы хотите сделать, это убедиться, что IDX будет переведен в список кодов, например (1,2,3)или ('a', 'b', 'c').Если список кодов является списком целых чисел, я настоятельно рекомендую получить список кодов, подобных этому

rs.OPEN "SELECT DATE, ID, NAME, INFO FROM xxx WHERE ID in ('"& IDX &"," & IDB & ")"

(независимо от того, какой IDB), и если это список строк, и вам нужно поместить их в одинарные кавычкипараметры:

rs.OPEN "SELECT DATE, ID, NAME, INFO FROM xxx WHERE ID in ('"& IDX &"','" & IDB & "')"

Это все очень запутанно с кавычками и одинарными кавычками!К счастью, редактор здесь достаточно умен, чтобы сказать мне, когда я неправильно понял код:)

...