【问题标题】:Excel VBA Fill Combo Box With Data From SQL QueryExcel VBA 使用 SQL 查询中的数据填充组合框
【发布时间】:2017-11-30 16:57:24
【问题描述】:

我正在寻找一些关于如何使用 VBA 从 SQL 派生的数据填充组合框/列表框的建议。

Sub RunSELECT()
Dim cn As Object, rs As Object, output As String, sql As String

'---Connecting to the Data Source---
Set cn = CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = ""
    .Open
End With


'---Run the SQL SELECT Query---
sql = "SELECT DISTINCT i.* FROM tblITEMS i INNER JOIN tblITEM_ATTRIBUTE_VALUES iav1 on i.PART_NO = iav1.PART_NO and i.REV = iav1.rev and iav1.ATTRIBUTE_NAME = 'Item' AND iav1.ATTRIBUTE_VALUE = 'X100' INNER JOIN tblITEM_ATTRIBUTE_VALUES iav2 on i.PART_NO = iav2.PART_NO and i.REV = iav2.rev and iav2.ATTRIBUTE_NAME = 'Item Name' AND iav2.ATTRIBUTE_VALUE = 'Variable' ORDER BY i.PART_NO, i.REV"

Set rs = cn.Execute(sql)

Do
   output = output & rs(0) & ";" & rs(1) & ";" & rs(2) & vbNewLine
   Debug.Print rs(0); ";" & rs(1) & ";" & rs(2)
   rs.MoveNext
Loop Until rs.EOF

MsgBox output

'---Clean up---
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub

上面创建了一个有效的 msgbox,并为我提供信息。我可以将此“输出”导出到一个单元格,但单元格内容应填写多个单元格,而不仅仅是一个。

如何更改我的代码以将“输出”导出到多个单元格(根据需要)或组合/列表框?

提前干杯

【问题讨论】:

  • 我想你可以谷歌这个:fontstuff.com/vba/vbatut10.htm
  • 嗨 Steusloff - 感谢您的帮助,我会将它添加到我的阅读列表中!真的需要提高我的 VBA 技能!

标签: sql excel vba


【解决方案1】:

要输出到组合框或列表框,请替换此部分:

Do
   output = output & rs(0) & ";" & rs(1) & ";" & rs(2) & vbNewLine
   Debug.Print rs(0); ";" & rs(1) & ";" & rs(2)
   rs.MoveNext
Loop Until rs.EOF

用这个:

listboxname.Column = rs.GetRows

【讨论】:

  • 嗨,Rory,感谢您的帮助,但我收到错误消息“运行时错误 '3021':EOF 或 EOF 为 True,或者当前记录已被删除。请求的操作需要当前记录。有什么想法吗?
  • 从头开始,这是因为我的查询不正确并且没有找到任何数据。再次感谢您的帮助 Rory。
猜你喜欢
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2017-06-04
  • 1970-01-01
相关资源
最近更新 更多