2

以下は 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

ちなみに、助けになると思っていくつかのブラケットを削除しましたが、そうではありませんでした。

4

3 に答える 3

2

Remouさんの意見に賛成です。80004005 は不適切なクエリを示しているのではなく、データ ソース名が間違っているか、Access ファイルが破損していることを示していると思います。

このクエリを追跡する前に、接続文字列をチェックして、単純なクエリを実行できることを確認します。

于 2012-08-10T15:57:44.887 に答える
2

これは、例外という単語を角括弧で囲むことで解決されました。

于 2012-08-16T14:25:39.187 に答える
1

MikeY そうですね。すべての IIS プロセスに、データベースを含むフォルダーへの読み取り/書き込み (NTFS) アクセス許可があることを確認してください。通常、これは IUSR_[machinename] アカウントです。使用している IIS のバージョンによって異なります。IIS で、「匿名」ユーザーがマップされているアカウントを確認します。

簡単なチェックとして、フォルダを「Everyone」の読み取り/書き込みに設定するだけです。MSAccess はロックなどを維持するために .LDB ファイルを作成/破棄する必要があるため、ファイルだけでなくフォルダー レベルである必要があります。

于 2012-08-10T16:22:01.763 に答える