-1
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 驱动程序 无效的下标引用。

4

2 回答 2

2

很难理解你真正想要达到的目标。

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

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

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

DB.QueryDefs("myQuery").SQL = strSql
于 2016-02-02T13:27:30.603 回答
0

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

Select field1, field2 field3 From (?)

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

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

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

于 2016-02-05T13:10:44.363 回答