ODBC Connection Dynamic From 子句

ODBC Connection Dynamic From Clause

ODBC;DSN=Test;UID=;PWD=;SourceDB=\server\folder\Test\prime.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;

然后是使用该连接的功能性静态查询。 prime.dbc.

中有 5 个表
Select field1, field2 field3
From Table1

现在基于下面的函数,我想将 funTestShipUic 提供给 FROM 子句而不是静态 Table1。

Public Function funTestShipUic() As String

   funTestShipUic = lngTestShipUic

End Function

我试过了...

Select field1, field2 field3
From funTestShipUic() 

但我收到 ODBC--调用失败。 ODBC Visual FoxPro 驱动程序无效的下标引用。

很难理解您实际想要实现的目标。

您可以使用字符串连接在 VBA 中构建动态 SQL,如下所示:

strSql = "SELECT field1, field2 FROM " & myFunctionThatReturnsATableName()
Set myRecordset = CurrentDb.OpenRecordset(strSql)

您还可以将 SQL 分配给现有查询,包括 PassThrough 查询。

DB.QueryDefs("myQuery").SQL = strSql

首先,您不应该将 ODBC 与 VFP 一起使用,除非您使用的是 VFP6 及更早版本或 ADS 服务器。而是简单地使用 OLEDB (VFPOLEDB)。然后您可以将函数的结果作为参数传递。即:

Select field1, field2 field3 From (?)

并将 funTestShipUic() 添加到参数集合中。如果您使用 ODBC,那么在直通查询中它会是这样的:

Select field1, field2 field3 From (?funTestShipUic())

参数由驱动程序处理,SQL 不会按原样发送到服务器。