经典的 ASP 奇怪的 SQL 错误

Posted

技术标签:

【中文标题】经典的 ASP 奇怪的 SQL 错误【英文标题】:Classic ASP bizarre SQL error 【发布时间】:2012-08-09 14:53:25 【问题描述】:

我正在使用以下 Conn 字符串连接到 Access DB

Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=\\server\share\Data\PFWTRAN.MDB"

以下 SQL 工作正常;

SQLIn =     "SELECT Date, Time " & _
            "FROM Transactions " & _
            "WHERE TokenNumber = " & TokenNo & " " & _
            "AND Date >= " & FromDateG & " " & _
            "AND Direction = -1 " & _               
            "ORDER BY Date, TransactionNumber;"

但是,我想要 Transactions.Exception = 0 的行,但是当我添加此 AND 条件时,脚本会在打开 RS 时失败;

error '80004005' /path/.../.../...asp, line 97

如果我删除 AND 条件,它会再次起作用。

即使我尝试将 'Exception' 放在 SELECT 部分,它也不会运行并给我那个错误。

为什么包含一个字段会导致这样的错误?我读到错误是由于权限引起的,但我的权限很好,因为 SQL 可以在没有这一字段的情况下工作。

有什么线索吗?

这是一个非常旧的 Access 95 数据库(甚至更早),也许我需要更改提供的连接?

【问题讨论】:

您引用的是日期值吗?输出生成的实际 SQL 字符串并将其粘贴到 MS Access 中的新查询中。看看那里怎么说。 【参考方案1】:

但是,我想要 Transaction.Exception = 0 的行,但是当我添加此 AND 条件时,打开 RS 时脚本会失败

但 Transaction.Exception 引用的表与您的查询使用的表不同。

FROM Transactions

DateTimeException 是 Problem names and reserved words in Access。将这些名称括在方括号中,或在它们前面加上表名/别名。

考虑切换您的方法以使用参数查询...并将 TokenNoFromDateG 值作为参数提供,而不是将它们的值构建到 SELECT 语句中。

【讨论】:

谢谢!我将字段名称包含在 [ ] 中,它起作用了! p.s.那是一种类型。交易表名。

以上是关于经典的 ASP 奇怪的 SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL 与 asp 经典

访问和经典 ASP 错误 80004005 超出系统资源

经典 ASP SQL 注入保护

Ajax 字符编码,进入 SQL 很奇怪

经典 ASP 和 ASP.NET 集成

SQL Server 文本列影响返回到经典 ASP 的结果