- ベストアンサー
ACCESSでテーブルを更新する時で
テーブル(1)のある項目で、テーブル(2)のある項目を更新したいのですが・・ 項目 → No ・・・ 更新a 更新b テーブル(1) 001 100 200 テーブル(2) 001 50 50 ↓ ↓ 【更新後】 001 100 200 どの様にすればできますか教えて下さいませんか。 《クエリーの更新を使えばできそうなんですが、実際にどうすれば良いのかよく解りません》
- みんなの回答 (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]; 実行はくれぐれも注意して、テーブルをコピーしてテストしてくださいね。テーブルの構造、テーブル間の関係がはっきりしないのでうまくいかないかもしれませんが、その時はまた補足ください。
その他の回答 (2)
- GreatDragon
- ベストアンサー率46% (186/402)
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
お礼
回答有難うございます。 残念ながら、VBAを知らないので、出来そうもありません。 クエリーのテーブル作成など簡単な操作でしたら画面をみながら出来るのですが、VBAの命令を駆使しては現在では出来ませんので、通常ACCESSのテーブル操作ではできないものでしょうか。 《回答有難うございました、折角プログラミングしていただきながら申訳ありません。 (;_:)
- GreatDragon
- ベストアンサー率46% (186/402)
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)
お礼
お礼が遅くなりましたが有難うございました。 一度やってみました。 【1】はできましたが、【2】の意味がよくわかりませんでした。回答有難うございました。
お礼
早速の回答有難うございました。 一度挑戦してみます。