我的任务是根据第A列第3行中的值从SQL DB获取数据。
Excel表格示例:
ITEM | QTY TO PICK | QTY ON ORDER | Column 2 | Column 3 etc
PART 1 | 5 | <Data will be populated here>
PART 2 | 12 | <Data will be populated here>
此代码通过命令按钮运行。
从C3开始填充从SQL中提取的数据。
但是,我的下面的代码一次只返回一行。
我知道在哪里需要做出改变,我只是不知道是什么。在谷歌搜索至少2个小时后,我彻底难倒了。
ItemNumber = Range("A3").Value
我已经尝试过修改("A3:A100").Value
,但我发现错误。
以下完整代码;
Private Sub CommandButton2_Click()
' Create a connection object.
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
' Provide the connection string.
Dim strConn As String
'Use the SQL Server OLE DB Provider.
strConn = "Provider=SQLOLEDB;"
'Connect to the Pubs database on the local server.
strConn = strConn & "server=<server name>;INITIAL CATALOG=<DB Name>;"
'Use an integrated login.
strConn = strConn & " INTEGRATED SECURITY=sspi;"
'Now open the connection.
cn.Open strConn
'
'
ActiveSheet.Range("C3:G10000").Clear ' clear out existing data
Dim ItemNumber As String
ItemNumber = Range("A3").Value
' Create a recordset object.
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
SQLStr = "Select * from vw_WorksOrder WHERE ITEMNO = " & ItemNumber & ""
rs.Open SQLStr, cn
' Copy the records into cell A1 on Sheet1.
Sheet4.Range("C3").CopyFromRecordset rs
' Tidy up
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
答案 0 :(得分:0)
我的建议是:
1)
在SQL Server上创建一个表,其中包含sql语句的参数(itemnumber = 1)
2)。 编写一个循环,循环遍历范围并逐个向表中添加值,如:
i = 1 而细胞(i,3).value&lt;&gt; &#34;&#34; ...插入临时值(参数1,参数2等)
i = i + 1 WEND
3。)
修改加入表的记录集的sql语句,其中包含您要提取的参数和数据以及粘贴该数据。
答案 1 :(得分:0)
您可以尝试像这样构建SQL
"Select * from vw_WorksOrder WHERE ITEMNO in (" & _
join(application.transpose(range("a1:a5").Value),",") & ")"
或者,对于字符串。
"Select * from vw_WorksOrder WHERE ITEMNO in ('" & _
join(application.transpose(range("a1:a5").Value),"','") & "')"