我想编写以下功能,该功能应在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
QueryTables.Add
TIA。
您可以编写一个自定义函数来做到这一点
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
= GetItem(“ fieldname”; 2)
需要模块是因为不能从扩展架内部调用非模块函数。