Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


419 / 9994 ←次へ | 前へ→

【12888】Re:更新ログ付加のやり方
回答  かるびの  - 15/10/1(木) 0:54 -

引用なし
パスワード
   >rs.Open "Data_estimated_amount", cn, adOpenKeyset, adLockOptimistic

 ADOは、使ったことがないので、よくわからないのですが、
このコードは、「Data_estimated_amount」テーブルのレコードセットを開くというコードですよね。

 レコードセットを開くと、レコードが1レコード以上あるならば、
先頭レコードがカレントレコードになります。
 カレントレコードになるということは、そのレコードのみデータの読み書きができるということです。
 

>rs!日付 = Date
>rs!時間 = Time
>rs!登録者 = Me.登録者

 これらのコードは、カレントレコードの各フィールドの値を書き替えています。
 レコードセットを開いてから、レコードの移動を行っていないので、
結局、先頭レコードの値が書き替えられます。


 つまり、このプロシージャを何度実行しようとも、先頭レコードの値をその都度上書きしているだけ
という状況です。


 更新ログをつけるためには、
その都度、「Data_estimated_amount」テーブルに新規レコードを追加して、
当該新規レコードにおける各フィールドの値を書き替える
という操作をする必要があります。

 DAOであれば、
>rs!日付 = Date
のコードの前に、
   rs.AddNew
を実行すれば、レコードセットに新規レコードが追加され、それがカレントレコードになるので、
>rs!日付 = Date
により、新規レコードの日付フィールドにDate関数の返り値が格納されます。

 なお、「rs.Update」を実行しないと、折角「rs!日付 = Date」で書き替えても、テーブルに保存されません。

 ADOの場合も、AddNewメソッドとか、Updateメソッドで良かったように思いますが、
いかんせん、ADOは使ったことがないので、はっきりしたことはわかりません。
 悪しからず。

244 hits

【12887】更新ログ付加のやり方 素人 15/9/30(水) 13:43 質問[未読]
【12888】Re:更新ログ付加のやり方 かるびの 15/10/1(木) 0:54 回答[未読]
【12889】Re:更新ログ付加のやり方 素人 15/10/1(木) 9:49 お礼[未読]

419 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free