Access VBA質問箱 IV

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

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


4373 / 9994 ←次へ | 前へ→

【8868】履歴について
質問  アイマール  - 06/12/6(水) 19:30 -

引用なし
パスワード
   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
1,122 hits

【8868】履歴について アイマール 06/12/6(水) 19:30 質問
【8871】Re:履歴について 小僧 06/12/7(木) 14:42 発言
【8872】Re:履歴について アイマール 06/12/7(木) 15:48 質問
【8873】Re:履歴について 小僧 06/12/7(木) 16:16 発言
【8875】Re:履歴について アイマール 06/12/7(木) 16:53 質問
【8877】Re:履歴について 小僧 06/12/7(木) 17:50 発言

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