sql查询导致错误2950

Posted

技术标签:

【中文标题】sql查询导致错误2950【英文标题】:sql query causing error 2950 【发布时间】:2008-11-27 13:05:50 【问题描述】:

此 SQL 查询由 Microsoft Access 2003 生成,运行时运行良好,但尝试从宏运行时失败。查询中是否有任何明显的错误,或者有什么原因无法正常工作?

SELECT tblAuction.article_no, tblAuction.article_name, tblAuction.subtitle, tblAuction.current_bid, tblAuction.start_price, tblAuction.bid_count, tblAuction.quant_total, tblAuction.quant_sold, tblAuction.start, tblAuction.ends, tblAuction.origin_end, tblUser.user_name, tblAuction.best_bidder_id, tblAuction.finished, tblAuction.watch, tblAuction.buyitnow_price, tblAuction.pic_url, tblAuction.private_auction, tblAuction.auction_type, tblAuction.insert_date, tblAuction.update_date, tblAuction.cat_1_id, tblAuction.cat_2_id, tblAuction.article_desc, tblAuction.countrycode, tblAuction.location, tblAuction.condition, tblAuction.revised, tblAuction.paypal_accept, tblAuction.pre_terminated, tblAuction.shipping_to, tblAuction.fee_insertion, tblAuction.fee_final, tblAuction.fee_listing, tblAuction.pic_xxl, tblAuction.pic_diashow, tblAuction.pic_count, tblAuction.item_site_id
FROM tblUser INNER JOIN tblAuction ON tblUser.id = tblAuction.seller_id;

【问题讨论】:

您之前的声明怎么样:如果我将其更改为表而不是查询的 tblAuction,我会收到此错误:800a0005': Invalid procedure call or argument 另外VBScript一般不被称为宏,如果你的意思是继续***.com/questions/314245/… 不,这是一个单独的问题,与 vbscript 无关。如果我尝试从此查询中在 Access 中运行 TransferText 宏,它将失败,但查询将运行。 vbscript 失败的原因是因为这个查询..这就是问题的范围。 您能否发布以下内容:1)宏的命令和属性。 2) tblUser 和 tblAuction 表的定义。 这是在什么操作系统上运行的? XP、Vista 还是更早的版本? 【参考方案1】:

您的意思是来自 Access 宏还是来自 VBScript 或来自 VBA?如果您有一个正在调用操作的宏,那么我的建议是将其转换为 VBA 语句。我假设当您说运行时它运行良好时,您的意思是作为 Access 查询运行。您不指定数据库是本地数据库还是远程数据库(即 SQL Server)。假设它是本地的,那么从 VBA 运行该 SQL 语句必须有效。

【讨论】:

数据库是本地访问的mdb文件。我的意思是从宏运行它会返回错误 2950,你是对的,当我说运行良好时,我的意思是作为访问查询。问题在于查询,因为它阻止宏和 vbscript 工作 你从哪里执行你的“宏”?在访问范围内?我没有找到任何关于 err 2950 的详细信息。你能提供错误文本吗? 错误文本是无效的查询子句,我已将问题缩小到一列,一定是导致问题的日期【参考方案2】:

This article 适用于 Access 2007,但也许您也遇到过这种情况。

您在 Access 中使用的安全级别是什么? (打开一个 MDB,然后转到 Tools\Macro\Security...)。尝试降低安全级别,看看是否有帮助。

【讨论】:

【参考方案3】:

我注意到您在字段名称中使用了 INSERT 和 UPDATE 等关键字。这样的词在通过宏发送时可能会被分析为 SQL 指令,从而导致错误。

你能试着把它们放在[括号]之间吗?无论如何,最好更改字段名称。

【讨论】:

我可以试试这个,但是如果它在 vbscript 中有效,它在宏中是否无效? 我想有一段代码应该将宏中的文本打包,以便将其发送到服务器上。想象一下,那段代码有一个缺陷,其中像“INSERT”和“UPDATE”这样的字符串将被视为 SQL 关键字......

以上是关于sql查询导致错误2950的主要内容,如果未能解决你的问题,请参考以下文章

转换为 ActiveRecord 查询(火鸟数据库)时导致错误的原始 SQL 查询

使用 FLATTEN 的 SQL 调用导致“错误:查询执行期间超出资源”

查询中的 SQL 变量导致意外的 SQL 语法错误 [重复]

由于带有动态 PHP 输入的 SQL 查询导致的 PDO 异常导致的致命错误

SQL Select - Union 结合 Join 查询导致错误

查询包含 java.sql.Date 列的表时,Jpa findAll() 导致错误