1

あなたが私に与えることができるどんな助けにも感謝します. フォームのレコードソースとして SQL クエリを使用しようとしています。

strSQL = "SELECT " & DocID & " AS DocID,'" & DocumentType & "' AS DocumentType,"   & "B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote FROM ((QC.QCAttributeDecisionPointAsc A INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID) LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID AND C.QCAssignmentID=" & AssignmentID & " ) WHERE QCAttributeID= " & AttributeID & ";"

しかし、次のように実行時エラーが発生します。SQL文字列の括弧を削除すると、「クエリ式の構文エラー(演算子の欠落)」

クエリにかっこがあると、Access で次のエラーが表示されます:「結合式はサポートされていません」

LEFT JOIN の AND だと思います。正しい結果を得るには、クエリをこのようにする必要があります。サブクエリを使用してこれを行う方法を教えてください。デバッグ時に表示される SQL 文字列は次のとおりです。

SELECT 7674754 AS DocID,'All Supporting Documents' AS DocumentType,
B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote 
FROM QC.QCAttributeDecisionPointAsc A 
INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID 
LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID 
AND C.QCAssignmentID=53 WHERE A.QCAttributeID= 3;

あなたが私に与えることができるどんな助けにも感謝します.

4

3 に答える 3

0

HansUp の提案に従ってテーブル名を角括弧で囲み、条件セクションの丸括弧を削除してください。これを試して:

SELECT  7674754                    AS DocID
      , 'All Supporting Documents' AS DocumentType
      , B.Description              AS [Decision Point]
      , B.QCDecisionPointID
      , C.QCNote
FROM    [QC.QCAttributeDecisionPointAsc] A
        INNER JOIN [QC.QCDecisionPoint] B
        ON      A.QCDecisionPointID = B.QCDecisionPointID
        LEFT JOIN [QC.QCResultDecisionPoint] C
        ON      C.QCDecisionPointID = B.QCDecisionPointID
        AND     C.QCAssignmentID    = 53
WHERE   A.QCAttributeID             = 3;
于 2013-01-23T19:26:47.677 に答える
0

それは正しいです。示されているように、結合で AND を使用することはできません。Where ステートメントの And を使用して、必要な答えを得ることができますか? 複数の結合がある場合、Access では結合を括弧で囲む必要があることにも注意してください。

SELECT  7674754                    AS DocID
      , 'All Supporting Documents' AS DocumentType
      , B.Description              AS [Decision Point]
      , B.QCDecisionPointID
      , C.QCNote
FROM  (  [QC.QCAttributeDecisionPointAsc] A
        INNER JOIN [QC.QCDecisionPoint] B
        ON      A.QCDecisionPointID = B.QCDecisionPointID )
        LEFT JOIN (SELECT * FROM [QC.QCResultDecisionPoint] 
                   WHERE QCAssignmentID    = 53) As C
ON      C.QCDecisionPointID = B.QCDecisionPointID
WHERE   A.QCAttributeID             = 3
于 2013-01-23T20:17:51.510 に答える
0

AND C.QCAssignmentID=53WHERE 句に移動してみてください。

SELECT 7674754 AS DocID,'All Supporting Documents' AS DocumentType,
B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote 
FROM QC.QCAttributeDecisionPointAsc A 
INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID 
LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID 
WHERE A.QCAttributeID= 3 AND (C.QCAssignmentID=53 OR C.QCAssignmentID IS NULL)

これは LEFT JOIN であるため、C から特定の値を取得するか、何も取得しないかを指定する必要があります (それOR C.QCAssignmentID IS NULLが存在する理由です) 。

于 2013-01-23T19:00:24.717 に答える