• ベストアンサー

accessについて

vbaで、既存のレコードのあるフィールドにデータを入力することは可能ですか。可能ならどのような記述になるんでしょうか。教えてください。

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

  • ベストアンサー
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

テーブルA ・キー  数値型 ・項目1 テキスト型 ・項目2 テキスト型 ・項目3 テキスト型 ・項目4 テキスト型 というテーブルがあり、キーには1~100の一意の値が入った100レコードのデータがあるとします。 これをVBAを使用して、項目3の内容だけ書き換えるには、行く地下方法があります。 まず、VBEの画面から[ツール] - [参照設定]で「Microsoft DAO 3.6 Object Library」にチェックを入れます。Accesskバージョンにより表記が若干異なる。 Public Sub sub例題1()  ' SQLを使用して全データを一括で同じ値に更新する場合  Dim lobjDB    Database  Dim lstrSqlStmnt As String    Set lobjDB = CurrentDB()  lstrSqlStmnt = "UPDATE テーブルA SET 項目3 = " & Chr(34) & "変更後データ" & Chr(34)  lobjDB Execute lstrSqlStmnt    lobjDB.Close  Set lobjDB = Nothing End Sub Public Sub sub例題2()  ' SQLを使用して特定のレコードのデータを更新する場合  Dim lobjDB    Database  Dim lstrSqlStmnt As String    Set lobjDB = CurrentDB()  lstrSqlStmnt = "UPDATE テーブルA SET 項目3 = " & Chr(34) & "変更後データ" & Chr(34) & _          " WHERE キー = 20"  lobjDB.Execute lstrSqlStmnt    lobjDB.Close  Set lobjDB = Nothing End Sub Public Sub sub例題3()  ' SQLを使用しないで特定のレコードのデータを更新する場合  Dim lobjDB    Database  Dim lstrSqlStmnt As String  Dim lstrRecordset As Recordset  Set lobjDB = CurrentDB()    lstrSqlStmnt = "SELECT * FROM テーブルA"  Set lobjRecordset = lobjDB.OpenRecordset(lstrSqlStmnt, dbOpenDynaset)  While Not lobjRecordset.EOF   If lobjRecordset.Fields("キー").Value = 20 Then    lobjRecordset.Edit    lobjRecordset.Fields("項目3").Value = "変更後データ"    lobjRecordset.UpDate   End If   lobjRecordset.MoveNext  WEnd    lobjDB.Close  Set lobjDB = Nothing End Sub となります。 分かりますか?(^^;

shinchan_k
質問者

お礼

早速ありがとうございました。結構大変そうですね。参考にさせて頂きます。

関連するQ&A