|
Q_住所(クエリ)を元に作成したフォームがあり、そのフォームには、
「姓」、「名」、「No_組織」、「No_テスト」など、各フィールドを
貼っています。
◇テキストボックス:「姓」、「名」、その他・・・
◇コンボボックス:「No_組織」、「No_テスト」、その他・・・
それらのコントロールにて、何かを編集したら、編集前のレコードを、
履歴用テーブルに記録したい。
つまり、Q_住所のレコードを、履歴用テーブルに記録する。
<目的>
ただし、どの"フィールド"を修正したか、フィールド名も記録するため、
編集前のフィールドと編集後のフィールドを比較したい。
<エラー>
テキストボックスとコンボボックスを貼っている場合、両方を編集したら
何故かエラーが出ます。
尚、何故か、テキストボックスのみ編集した場合はエラーは起きませんでした。
何か足りない部分がありますでしょうか??
ctl_Nameにて、編集したフィールド名を格納するものとし、
MsgBox ctl_Name にて、編集したフィールド名を確認しています。
下記、プログラムの、
If ctlTextbox.ControlType = acTextBox Or ctlTextbox.ControlType = acComboBox Then
の部分で、
「この操作は、このタイプのオブジェクトには実行できません」とエラーが起きてしまいます。
何故、このような現象が起きるか分かりませんので、教えて下さい。
(過去ログも見ましたが、それらしきものは見つかりませんでした)
「姓」、「名」のみ編集した場合は、何もエラーが起きず、姓, 名 と
記録されますが、コンボボックス「姓」、「No_組織」を編集した場合は、
上記のようなエラーが出てしまいます。
--------------処理プログラム----------------------------
ctl_Name = Null 'Variantなので、初期値Null
'コントロール名(フィールド名)の取得
For Each ctlTextbox In Me.Controls
'コントロールがテキストボックスとコンボボックスである
If ctlTextbox.ControlType = acTextBox Or ctlTextbox.ControlType = acComboBox Then
'更新前データと更新後データを比較
If Nz(ctlTextbox.OldValue) <> Nz(ctlTextbox.Value) Then
'コントロール名をctl_Name に格納
If IsNull(ctl_Name) Then 'ctl_Nameが空白の場合
ctl_Name = ctlTextbox.Name
'ctl_Name = ControlsSorce.Name '意味不明なプログラム記述
Else
ctl_Name = ctl_Name & "," & Chr(32) & Chr(32) & ctlTextbox.Name
End If
End If
End If
Next ctlTextbox
MsgBox ctl_Name
|
|