複数値を持つフィールドの値を変更する
複数値を持つフィールド内の特定の値の書き換えは、UPDATE文(更新クエリ)で行えます。このとき、削除対象のレコード(1件)と削除する値の2つを条件(WHERE句)に指定するのがポイントです。VBAで行うときは、DAO、ADOのどちらのコネクションでも可能です。
複数値を持つフィールド内の特定の値を書き換える例
次のプログラムは、VBAを使い複数値を持つフィールド内の特定の値を書き換える処理のサンプルです。DAOを使い追加クエリ(UPDATE文)を実行しています。複数値を持つフィールドは「仕入れ先」です。

「@どのレコードの複数値フィールドにある」「Aどの値を削除するか」は、WHERE句を指定しています。なお、複数値を持つフィールドはValueプロパティを使い「フィールド名.Value」と記述します。

Sub Sample(pFindKey As String, pBefore As Long, pAfter As Long)

    Dim objMDB  As DAO.Database
    Dim strSQL  As String

    Set objMDB = Application.CurrentDb

    strSQL = "update  商品マスタ" _
           & "   set  取引先.Value = " & pAfter _
           & " where  商品コード= " & pFindKey _
           & "   and  取引先.Value = " & pBefore

    objMDB.Execute strSQL

    Set objMDB = Nothing

End Sub

参考までに、削除対象の値があるレコードの条件(pFindKey)、書き換え前の値(pBefore)と書き換え後の値(pAfter)は、いずれも引数で指定しています。また、コネクションはDAO(DAO.Database)を使用しています。
Copyright(C) 1999-2006 結城圭介。 All rights reserved