MS Access Query在Classic ASP中不起作用

时间:2012-08-10 15:32:56

标签: sql ms-access asp-classic

以下适用于Access;

SELECT Transactions.Date, Transactions.Time, Transactions.Direction,
           Transactions.TransactionNumber, Transactions.TransactionType,
           Transactions.Exception, Exceptions.ExceptionType
FROM Transactions LEFT JOIN Exceptions 
         ON  (Transactions.TransactionNumber = Exceptions.TransactionNumber)
         AND (Transactions.Date = Exceptions.Date) 
         AND (Transactions.TokenNumber = Exceptions.TokenNumber)
WHERE (((Transactions.Date)>=20120803) 
         AND ((Transactions.Direction)=-1) 
         AND ((Exceptions.ExceptionType) Not In (43,44,45,46) 
             OR (Exceptions.ExceptionType) Is Null) 
         AND ((Transactions.TokenNumber)=6605253))
ORDER BY Transactions.Date, Transactions.TransactionNumber;

但是如果在ASP中完成,我得到错误'80004005'

SELECT Transactions.Date, Transactions.Time, Transactions.Direction,
           Transactions.TransactionNumber, Transactions.TransactionType,
           Transactions.Exception, Exceptions.ExceptionType 
FROM Transactions LEFT JOIN Exceptions 
        ON Transactions.TransactionNumber = Exceptions.TransactionNumber 
    AND Transactions.Date = Exceptions.Date 
        AND Transactions.TokenNumber = Exceptions.TokenNumber 
WHERE Transactions.Direction = -1 
        AND (Exceptions.ExceptionType Not In (43,44,45,46) 
            OR Exceptions.ExceptionType Is Null)
        AND Transactions.TokenNumber= 6605253
        AND Transactions.Date >= 20120803 
ORDER BY Transactions.Date, Transactions.TransactionNumber

我顺便删除了一些括号,认为这会有所帮助,但事实并非如此。

3 个答案:

答案 0 :(得分:2)

我同意Remou的评论。 80004005没有指向错误的查询,我认为它指向数据源名称错误或损坏的Access文件。

我会检查你的连接字符串并验证你可以在追查这个查询之前运行一个简单的查询。

答案 1 :(得分:2)

通过将“Exception”放在方括号中来解决这个问题。

答案 2 :(得分:1)

MikeY是对的。确保所有IIS进程都对包含数据库的文件夹具有读/写(NTFS)权限。通常,这将是IUSR_ [machinename]帐户。根据您使用的IIS版本,它会有所不同。在IIS中,查看“匿名”用户映射到哪个帐户。

要进行快速检查,只需将文件夹设置为“Everyone”的读/写。它必须位于文件夹级别,而不仅仅是文件,因为MSAccess需要创建/销毁.LDB文件以维护锁等。