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 不会按原样发送到服务器。
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 不会按原样发送到服务器。