プロが教えるわが家の防犯対策術!

履歴を取るときに、今は更新したら、履歴を残すようにしているのですが、更新ボタンたるものを作成して、そのボタンを押したら、履歴をとるということはできますでしょうか?
現在、メイン(フォーム)の中には、タブを作成し、1つめには、担当者情報(サブフォーム)と重要人物情報(サブフォーム)。2つめのタブにはには、・・・。3つめのタブには、・・。とタブをたくさん作っています。
どなたか、ご教授ください。よろしくお願い申し上げます。

A 回答 (2件)

初めまして。

杉本と申します。
ご質問の内容の、履歴を残したいだけの処理であれば以下の方法が有効です。
なお、的はずれな回答であれば、ご容赦ください。

履歴テーブルを作成する
ID,担当者情報,重要人物情報,....,更新日

更新ボタンをクリックするときに以下の様なプロシジャーを実行する。

Sub 更新履歴()
Dim DB As DAO.Database
Dim StSQL As String
Set DB = CurrentDB

'SQL文を作成する(一例)
StSQL = "insert into 履歴テーブル (担当者情報,重要人物情報,更新日) " _
& "values( " _
& "'" & Forms!更新フォーム名!担当者情報フィールド名 & "'," _
& "'" & Forms!更新フォーム名!重要人物情報フィールド名 & "'," _
& "#" & Date & "#)"

'SQL文を実行する
DB.Execute StSQL
Set DB = Noting
end sub

*注意
1.サブフォームや、タブコントロールの参照方法は、ヘルプを参照してください。
2."'"は数値型のフィールドを更新するときは必要ありません。
3.参照設定で"Microsoft DAO 3.6 Object Library"を有効にしてください。

この回答への補足

お返事ありがとうございます。
ごめんなさい。質問の出し方が悪かったです。m(__)m
実は、データの変更時(BeforeUpdateとAfterUpdateを使用)に履歴を取ることはできているのですが、それでは、入力を行った時の履歴は取れるのですが、プルダウンメニューから選択しただけの時には、変更が行われたという認識ができていないようで、履歴が取れないのです。なので、「変更」というボタンを押した時に(←ここが質問です)履歴を取る!ということがしたかったのです。できますでしょうか?
ちなみに、現在は以下のように書き込んでおります。(これも、教えてもらったものなのですが・・・^_^;)
もし、わかればで良いのですが、履歴を下記で取り出すと、メモ帳部分でリターンを返した後の部分は履歴が取れていませんでした。防ぐ方法はありますでしょうか?ご教授よろしくお願い申し上げます。
Sub History_a()

Dim Ctr As Control
Dim strSQL As String

For Each Ctr In Me.Controls
If Ctr.ControlType = 109 Then
If Ctr.OldValue <> Ctr.Value Then
strSQL = "insert into 履歴 select * FROM 担当者情報 " & _
"where 顧客コード = " & Me.顧客コード
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Exit Sub
End If
End If
Next Ctr
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
History_a
End Sub

Private Sub Form_AfterUpdate()
Forms("メイン").Form.SF_履歴.Requery
End Sub

補足日時:2001/11/21 15:40
    • good
    • 0

杉本です。



>、「変更」というボタンを押した時に(←ここが質問です)履歴を取る!
が目的であれば、更新ボタンをクリックしたときの処理に、履歴の処理を入れればいいのでは?

Private Sub 更新ボタン_Click()
History_a
'更新の処理を記述
End Sub
    • good
    • 0
この回答へのお礼

杉本様m(__)m本当にありがとうございました。
access初心者の私には少し難しく・・・(ーー;)
杉本様から教えて頂いたプロシージャーをもう少し勉強してみますm(__)m

お礼日時:2001/11/24 20:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!