- ベストアンサー
accessについて
vbaで、既存のレコードのあるフィールドにデータを入力することは可能ですか。可能ならどのような記述になるんでしょうか。教えてください。
- みんなの回答 (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 となります。 分かりますか?(^^;
お礼
早速ありがとうございました。結構大変そうですね。参考にさせて頂きます。