2017-07-18 10 views
-1

私はAccessで開発されたアプリケーションを維持しています。そして、私は更新クエリを実装する必要がありますが、私は現時点で非常に固執しており、理由を理解できません。Accessデータベースの更新クエリ

基本的に、クエリは同じテーブルの別のレコードに続いてテーブルXのレコードを更新する必要がありますが、私が書いたクエリは何もせず、別々に更新と選択をテストしました。

ご迷惑をおかけして申し訳ございません。ここで

は、私が書いたクエリ(私は長すぎることを避けるために、いくつかのフィールドを削除しなかった、そしてもちろん、あなたが表示されますクエリは、それが欠落しているフィールドの問題ではなかったことを確認する試験を行った)

UPDATE 
    TABLE_X AS recordToUpdate, 
    (
    SELECT 
     DUP_C2B_From_CPL.[NUM-GrpHdr], 
     DUP_C2B_From_CPL.[NUM-LOT], 
     DUP_C2B_From_CPL.[SINGLE-SCENARIO], 
     DUP_C2B_From_CPL.EqvtAmt, 
     DUP_C2B_From_CPL.EqvtAmtCur, 
     DUP_C2B_From_CPL.EqvtAmtCurTft, 
     DUP_C2B_From_CPL.XchgRateInfExchangeRate, 
     DUP_C2B_From_CPL.XchgRateInfRateType, 
     DUP_C2B_From_CPL.XchgRateInfContractId, 
     DUP_C2B_From_CPL.ChqTp 

     FROM DUP_C2B_From_CPL 
    ) AS originalRecord 

SET 
    recordToUpdate.EqvtAmt = originalRecord.EqvtAmt, 
    recordToUpdate.EqvtAmtCur = originalRecord.EqvtAmtCur, 
    recordToUpdate.EqvtAmtCurTft = originalRecord.EqvtAmtCurTft, 
    recordToUpdate.XchgRateInfExchangeRate = originalRecord.XchgRateInfExchangeRate, 
    recordToUpdate.XchgRateInfRateType = originalRecord.XchgRateInfRateType, 
    recordToUpdate.XchgRateInfContractId = originalRecord.XchgRateInfContractId, 
    recordToUpdate.ChqTp = originalRecord.ChqTp 

WHERE 
    recordToUpdate.[SINGLE-SCENARIO] = 112811 
です

DUP_C2B_From_CPLここに私が興味を持っているレコードを取得しているサブクエリーがあります。そのサブクエリーは、値を取り込んで別のものに更新することができます。最後のWHERE閉鎖で

、私はあなたのために、より読みやすくするためにIDをハードコード(そしてはい、それは存在している:))

もデザイナーが正しくレンダリングしないので、この辺には何のエラーです。しかし、私が言ったように、それは何も更新していないようです。

さらに詳しい情報が必要な場合は、お気軽に教えてください。

+0

'recordToUpdate'と' originalRecord'の間にJOINはありませんか? (つまり、クエリを更新可能にする必要があると思います) – Andre

+1

*「何も更新していないようです」* - クエリを実行するとどうなりますか?アクセスで「0レコードが更新されました」と表示されるのですか、それとも別のメッセージがありますか? – Andre

+0

こんにちはアンドレ、彼らの間に一意の識別子がないので、私はジョインを行うことはできません。私はまずそれをやろうとしますが、誤ったレコードを更新する結果になる可能性があるため、私はONに固執していました。 @Edit: "クエリを実行するとどうなりますか?アクセスで" 0レコードが更新されました "とか、別のメッセージがありますか? クエリを実行すると、更新する必要があるすべての列が表示されますが、データは含まれていません。私はテーブルをリフレッシュすると、更新する必要があるレコードはありません。 – Nicolas

答えて

1

以下のように試すことができます。

UPDATE 
    Table1 AS t1 
    INNER JOIN Table1 AS t2 
    ON t1.Field1 = t2.Field2 
SET 
    T1.Field1 = t2.field1 

がない場合はすべてのあなたが

UPDATE Table1 t1 , Table1 t2 
SET T1.Field1 = t2.field1 
where t1.field1 = 'aa' and t2.field1 = 'bb' 
+0

Jatinを入力していただきありがとうございますが、動作しません。同じ結果です。何も変更されていません。私は2番目のクエリからSELECTを適用しようとしましたが、正しい結果が得られましたが、 。 – Nicolas

0

さて、以下のように試すことができ、その後の参加は、何らかの理由で、私は私のラップトップを再起動しなければならなかった、とクエリが今取り組んでいます。

ありがとうございました。