• ベストアンサー

ACCESSでテーブルを更新する時で

テーブル(1)のある項目で、テーブル(2)のある項目を更新したいのですが・・    項目 → No ・・・ 更新a 更新b テーブル(1)  001     100 200 テーブル(2)  001      50  50          ↓          ↓ 【更新後】 001 100 200 どの様にすればできますか教えて下さいませんか。 《クエリーの更新を使えばできそうなんですが、実際にどうすれば良いのかよく解りません》       

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.3

GreatDragonさんの#1でいいと思うんですが、更新クエリーでやってみました。ちなみに試したのはAccess2000です。 クエリを新規作成して、SQLビューで次のSQL文を貼り付けてください。 UPDATE テーブル1 INNER JOIN テーブル2 ON テーブル1.[No] = テーブル2.[No] SET テーブル2.更新a = [テーブル1]![更新a], テーブル2.更新b = [テーブル1]![更新b]; 実行はくれぐれも注意して、テーブルをコピーしてテストしてくださいね。テーブルの構造、テーブル間の関係がはっきりしないのでうまくいかないかもしれませんが、その時はまた補足ください。

ship1950
質問者

お礼

早速の回答有難うございました。 一度挑戦してみます。 

その他の回答 (2)

回答No.2

ANo.1のGreatDragonです。 後で読み返したら、ANo.1は誤りです。m(__)m お詫びにVBAでプログラミングしてみました。ご参考にどうぞ。 Public Sub MyUpdate()   Dim Cn As ADODB.Connection   Dim Rs1 As ADODB.Recordset   Dim Rs2 As ADODB.Recordset   Set Cn = CurrentProject.Connection   Set Rs1 = New ADODB.Recordset   Set Rs2 = New ADODB.Recordset   Rs1.Open "[テーブル(1)]", Cn   Rs2.Open "[テーブル(2)]", Cn, adOpenKeyset, adLockOptimistic   Do Until Rs1.EOF     Rs2.Find "[No] = '" & Rs1![No] & "'"     If Rs2.EOF Then       MsgBox "レコードが見つかりません。No=" & Rs1![No]     Else       Rs2![更新a] = Rs1![更新a]       Rs2![更新b] = Rs1![更新b]       Rs2.Update     End If     Rs1.MoveNext   Loop   Rs2.Close: Set Rs2 = Nothing   Rs1.Close: Set Rs1 = Nothing   Cn.Close: Set Cn = Nothing End Sub

ship1950
質問者

お礼

回答有難うございます。 残念ながら、VBAを知らないので、出来そうもありません。 クエリーのテーブル作成など簡単な操作でしたら画面をみながら出来るのですが、VBAの命令を駆使しては現在では出来ませんので、通常ACCESSのテーブル操作ではできないものでしょうか。  《回答有難うございました、折角プログラミングしていただきながら申訳ありません。 (;_:)

回答No.1

1.更新したいフィールドを置き換えるようにテーブル作成クエリを作成します。 (テーブル作成クエリの例) SELECT [テーブル(2)].[No], [テーブル(1)].更新a, [テーブル(1)].更新b INTO [テーブル(3)] FROM [テーブル(1)] RIGHT JOIN [テーブル(2)] ON [テーブル(1)].[No] = [テーブル(2)].[No]; 2.上記テーブルに問題なければテーブル名を変更します。 テーブル(2) → テーブル(2)-Old テーブル(3) → テーブル(2)

ship1950
質問者

お礼

お礼が遅くなりましたが有難うございました。 一度やってみました。 【1】はできましたが、【2】の意味がよくわかりませんでした。回答有難うございました。

関連するQ&A