gpt4 book ai didi

sql - 来自 SQL Server 源的 Excel 下拉值

转载 作者:行者123 更新时间:2023-12-04 21:07:36 25 4
gpt4 key购买 nike

我正在尝试从 SQL Server 获取 Excel 中的单元格下拉值。我不想使用将所有数据放到另一张表的方法,并使用数据验证来控制下拉值。这总是给我一堆空行,因为我想确保我有空间在数据库中添加任何内容。

有没有办法直接从 SQL Server 检索下拉值?使用类似的语句:

Select name from employees

谢谢你的帮助...

最佳答案

使用 ADODB 检索您想要的值,并使用检索到的值在 Excel 中填充您可以动态创建的下拉形状。

在类似的情况下,由于源数据基本上是静态的,因此我在应用程序启动时从 ADODB 记录集中填充了一个全局数组,并在填充下拉列表中的项目时使用了该数组。这是该代码的片段:

Dim InstrumentIDs() As String
Dim InstrumentIDReader As Integer
Dim InstrumentIDCount As Integer
Public PositionRange As String

Public Sub GetInstrumentIDs()
'
'Populate InstrumentIDs array from current contents of Instrument table in EMS database
'
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim loader As Integer, sn As String

InstrumentIDReader = 0
On Error GoTo GetInstrumentError
conn.ConnectionString = "Provider=sqloledb; Data Source=myServer; Initial Catalog=myDatabase; User ID=myUser;Password=myPassword"
conn.Open
sql = "Select Count([SerialNo]) As [Number] From [Instrument]"
rs.Open sql, conn, adOpenStatic
InstrumentIDCount = CInt(rs![Number])
ReDim InstrumentIDs(InstrumentIDCount - 1)
rs.Close
sql = "Select [SerialNo] From [Instrument] Order By [SerialNo]"
rs.Open sql, conn, adOpenForwardOnly
loader = 0
rs.MoveFirst
Do While Not rs.EOF
sn = CStr(rs![SerialNo])
InstrumentIDs(loader) = sn
loader = loader + 1
rs.MoveNext
Loop
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
Exit Sub
GetInstrumentError:
MsgBox "Error loading instruments: " & Err.Description
End Sub

您必须在 VBA 编辑器的工具 > 引用中设置对 Microsoft ActiveX 数据对象 m.n 库(我的计算机上的最新版本是 2.8)的引用。

见文章
http://www.thespreadsheetguru.com/blog/2014/5/14/vba-for-excels-form-control-combo-boxes有关如何在 Excel 中管理下拉框的提示。

关于sql - 来自 SQL Server 源的 Excel 下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com