通过Access 2007对普及数据库进行DSN-Less查询?

时间:2011-10-05 17:24:36

标签: ms-access pervasive

有关最新进展,请参阅编辑3:

背景故事:

我试着看,我不想问这样一个新问题但是这里有。

我最近得到了一个显然连接(或曾经)连接到Pervasive数据库的数据库。在Access数据库中的查询包含这种格式之前:

SELECT * FROM (ODBC;DRIVER={Pervasive ODBC Client Interface};
ServerName=####;ServerDSN=DB;ArrayFetchOn=;ArrayBufferSize=;OpenMode=1;
DecimalSymbol=.;ClientVersion=9.50.077.002;CodePageConvert=1252;
AutoDoubleQuote=0;)distributors;

老实说,我不知道这是否有效,但无论如何。我得到了一些关于连接字符串的新信息,据称如下。我不确定它来自哪里,我只知道他们告诉我的是什么。

ODBC;DSN=DATABASE;ServerName=######.#####;ServerDSN=DATABASE;ArrayFetchOn=1;
ArrayBufferSize=8;TransportHint=TCP:SPX;ClientVersion=10.10.125.000;
CodePageConvert=1252;PvClientEncoding=CP1252;PvServerEncoding=CP1252;
AutoDoubleQuote=0;

我尝试了两者的各种排列,发现如果我使用这样的东西:

SELECT * FROM (ODBC;DRIVER={Pervasive ODBC Client Interface};DBQ=@DATABASE;
ServerName=#######.#####;ArrayFetchOn=1;ArrayBufferSize=8;
TransportHint=TCP:SPX;ClientVersion=10.10.125.000;CodePageConvert=1252;
PvClientEncoding=CP1252;PvServerEncoding=CP1252;AutoDoubleQuote=0;) distributors;

我在JOIN函数上遇到语法错误。我已经能够使用查询,获得各种错误,但这是我遇到的最多。想法/最终目标是数据库可以查询普及数据库,而无需使用任何客户端DSN或尽可能设置类似的东西。为了记录,这是一台带有Access 2007和(我认为)Pervasive 10的Win7机器。

同样,可能只是一些愚蠢的事情,但如果有人有任何想法或意见,我们将不胜感激。 :)

编辑:我想问的问题是,为什么Access说我的SQL查询错误,I.E。当我没有看到任何连接时,为什么会抛出Join错误(JOIN函数上的语法错误)?它突出显示FROM之后的第一个分号(ODBC;部分。

编辑2 :玩了一下,我发现这个查询结合定义的DSN给了我结果:

SELECT * FROM [ODBC;DRIVER={Pervasive ODBC Client Interface}
ServerName=#####.#####;DBQ=st;ArrayFetchOn=1;ArrayBufferSize=8;
TransportHint=TCP:SPX;ClientVersion=10.10.125.000;CodePageConvert=1252;
PvClientEncoding=CP1252;PvServerEncoding=CP1252;
AutoDoubleQuote=0].[distributors];

但是,如果有办法使这个DSN更少,那将是最终目标。 :)

编辑3 :我找到了答案。各种各样。

我认为如果把它搞定,它就可以了。希望这有助于其他人。 ^^

SELECT *
FROM [ODBC;DRIVER={Pervasive 
ODBC Client Interface};
ServerDSN=st;ServerName=######.#####;ArrayFetchOn=1;
ArrayBufferSize=8;TransportHint=TCP:SPX;ClientVersion=10.10.125.000;
CodePageConvert=1252;PvClientEncoding=CP1252;
PvServerEncoding=CP1252;AutoDoubleQuote=0;].[distributors];

1 个答案:

答案 0 :(得分:2)

认为如果把它搞定,那就有效了。希望这有助于其他人。 ^^

SELECT *
FROM [ODBC;DRIVER={Pervasive 
ODBC Client Interface};
ServerDSN=st;ServerName=######.#####;ArrayFetchOn=1;
ArrayBufferSize=8;TransportHint=TCP:SPX;ClientVersion=10.10.125.000;
CodePageConvert=1252;PvClientEncoding=CP1252;
PvServerEncoding=CP1252;AutoDoubleQuote=0;].[distributors];