• ベストアンサー

ACCESS2000で更新ボタンを押すと、更新履歴を取れるようにしたいのです。

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

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

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

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

cas-jp
質問者

お礼

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

その他の回答 (1)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

初めまして。杉本と申します。 ご質問の内容の、履歴を残したいだけの処理であれば以下の方法が有効です。 なお、的はずれな回答であれば、ご容赦ください。 履歴テーブルを作成する 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"を有効にしてください。

cas-jp
質問者

補足

お返事ありがとうございます。 ごめんなさい。質問の出し方が悪かったです。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