ODBC连接动态来自子句

时间:2016-02-02 12:15:13

标签: ms-access ms-access-2010 visual-foxpro pass-through

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分:0)

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

  input {

  height:34px;

    }

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

Select field1, field2 field3 From (?)

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