• ベストアンサー

サブフォームのレコード操作について(ACCESS97)

Access97で下記のような入力フォームを作成しました。 【1】「ファイルを参照」ボタンをクリック 【2】ダイアログボックスが開くので、目的のファイルを選択する。 【3】サブフォーム(表形式)の1件目に、そのファイルのフルパスが格納される。 この直後に【2】の操作によって2つ目のファイルを選択すると、 やはりサブフォームの1件目にファイルのフルパスが格納されてしまい、 最初に選んだファイルのパスが上書きされてしまいます。 ここで上書きせずに、次のレコードへ移動してからファイルパスを書きこむ ロジックを書きたいのですが、VBA初心者なのでどうしたら良いのかわかりません。 ご教授を願います。

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

  • ベストアンサー
回答No.3

Docmd.GoToControl "サブフォームの名前" Docmd.GotoRecord , , acNewRec docmd.GotoControl "書込み先コントロールの名前" Screen.ActiveControl = "ファイルのパス" といった形でどうでしょうか? もちろん下の2行は Forms!Main.Sub!Control = xxxx の形で1行にしても問題ないかと思います。

その他の回答 (2)

  • -boya-
  • ベストアンサー率35% (176/494)
回答No.2

フォームがどの様になっていて、何がしたいかわからないので 的外れな事かもしれませんが、、、 表形式のサブフォームはどこかしらのテーブルとつながって いるんですよね?つながっているならテーブルに直接 データを入れてしまえば良いのでは、、、?それではダメですか? 余計なおせっかいですが、サブフォームではなくてリストボックス の方が良さそうなイメージ?

回答No.1

DAOを使用したサンプルを記述します (参照設定にて「Microsoft DAO Object Library」をチェックして下さい) '~~~~~~~~~~ Private Sub CmdFilePath_Click() Dim stPathName As String Dim RS As DAO.Recordset 'ファイル名取得 stPathName = Get_FullPathName '取得できなかったら、処理終了 If stPathName = "" Then Exit Sub 'サブフォームのレコードセットクローン Set RS = Me.SubForm.Form.RecordsetClone '新規追加 RS.AddNew RS![PathName] = stPathName RS.Update 'レコードセット解放 Set RS = Nothing '表示更新 Me.SubForm.Form.Repaint End Sub '~~~~~~~~~~ サブフォームのフォーカスを新規レコードに移動する方法は、残念ながら知りません(T_T) (既に登録してあるデータならば、「GotoPage」メソッドを使用すれば移動できるのですが・・・) 参考までに

関連するQ&A