sql - 如何编写从 SQL 数据库返回值的 Excel 函数?

标签 sql excel odbc

我想编写以下应该在 Excel 工作表中使用的函数:

=GetRecField("Foo Record Key", "FooField1")

...它将通过 ODBC 内部连接到 SQL 数据库,在那里执行

SELECT FooField1 FROM MyTable WHERE KEY_FIELD='Foo Record Key';

并将返回结果值作为函数 GetRecField 的结果。上面的 SQL 被授予只返回一条记录(IOW KEY_FIELD 具有唯一约束)。

当然,上面的函数可以在一张工作表中多次调用,所以请尽量避免盲目的QueryTables.Add

TIA。

最佳答案

你可以写一个自定义函数来做到这一点

  1. 打开 VBA 编辑器 (ALT-F11)
  2. 打开工具 -> 引用,确保选中“Microsoft ActiveX Data Objects 2.8 Library”和“Microsoft ActiveX Data Objects Recordset 2.8 Library”
  3. 右键单击“VBAProject”,然后选择“插入”->“模块”
  4. 打开模块。现在您可以创建自定义函数,例如:
    Public Function GetItem(field As String, id As Integer) As String
        Set oConnection = New ADODB.Connection
        Dim oRecordset As ADOR.Recordset
        oConnection.Open "provider=sqloledb;data source=yourserver;" & _
            "Trusted_Connection=yes;initial catalog=yourdatabase;"
        Set oRecordset = oConnection.Execute( & _
            "select " & field & " from table where id = " & id)
        If oRecordset.EOF Then
            GetItem = "n/a"
        Else
            GetItem = oRecordset(field)
        End If
    End Function
  1. 您现在可以从单元格中调用函数:

    =GetItem("字段名";2)

该模块是必需的,因为无法从 spreadhseet 内部调用非模块函数。

关于sql - 如何编写从 SQL 数据库返回值的 Excel 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836065/

相关文章:

sql - MySQL 外键数据库查询问题

excel - VBA在运行时更改excel代码并执行它

SSIS:在 Azure key 存储中使用 CMK 插入 Always Encrypted 表时,来自 ODBC 提供程序的错误

sql-server - Solaris 10 上的 Oracle ODBC 驱动程序

python - 参数为 : [ODBC Microsoft Access Driver] Too few parameters. 的 PypyODBC 预期为 4

sql - 使用 gorm 插入数据时,检查不存在相同

Python pyodbc 无法识别参数标记。我提供了 2 个标记和两个值,但它无法识别它们

sql - varchar(255) v tinyblob v tinytext

excel - 检查宏是否使用 VBA 运行

excel - 如何使用 Excel 公式(无 VBA)在 HTTP POST 响应中检索一段数据?