• ベストアンサー

サブフォームのレコード操作について(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

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • Accessでのサブフォームの操作について

    Accessでのフォームの操作についてお教え下さい。 使用しているバージョンは2010です。 フォームAにボタンを設置し、フォームBを開くようにしました。 フォームAとBはIDで連携し、指定したレコードを開くようにしています。 フォームBには、サブフォームCがあります。 サブフォームCには複数のレコードが入っており、 こちらも指定したレコードを表示させてたいのですが方法が分かりません。 フォームAに設置したボタンを押すと、フォームBの指定したレコードを開き、 フォームB内にある、サブフォームCの指定したレコードを表示させたいです。 VBA等で制御することは可能でしょうか。 可能でしたら方法をお教え下さい。 宜しくお願いいたします。

  • Accessのサブフォームについて

    Accessのサブフォームのテキストボックスをクリックするとメインフォームのテキストボックスにサブフォームのテキストボックスの値を反映させるために以下のロジックを組み込んだ所エラーが発生してしまいました。 調べてみても分かりませんでしたので解決方法が分かる方は教えて下さい。 よろしくお願いします。 ロジック Form!メインフォーム!テキストボックス=サブフォームのテキストボックス エラー 「指定した式で参照されている’メインフォーム’フィールドが見つかりません」 「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」

  • ACCESSのサブフォーム

    ACCESSのサブフォームで、レコード表示について教えてください。 添付のサブフォームの一番左のコンボボックスに値を入力もしくは選択すると、未入力のレコードが下に1行分増えます。 (その他項目は連動して表示されます) サブフォームは帳票フォームを選択しているのですが、一般的には帳票フォームを選択した場合、レコードの数分だけ表示されると思うのですが、これは1レコードづつ増えていきます。 このサブフォームを作った人がもういないので、どうやって作ったのかが分かりません。 どなたか分かる人がいれば教えて頂けますでしょうか。 必要な情報があれば、調べて回答します。

  • サブフォームのレコードを1件のみに限定することはできますか?

    メインフォームの中にサブフォームを作りました。 メインフォームは単票形式で、サブフォームは表形式です。 (1)メインフォームのレコード1件につき、サブフォームのレコードは1件です。 今のままだとサブフォームが何件でも入力できてしまう仕組みなので、入力者が戸惑わないように、1件しかレコードを入力できないような仕組み(表示)に変えたいのです。 このようなことは可能なのでしょうか? (2)メインフォームの中にサブフォームを作ることにしたのは、依頼者から「この項目を増やしてほしい」と言われるのが一つずつで、その度にメインフォームに関連するエクセルなどのマクロの式を変えなければならず、手間がかかります。 そこで依頼者から言われる項目は○○の実績という一つのカテゴリーに限ったことなので、サブフォームにしてエクセルのマクロとは関連づかないようにすればメインフォームはいじらずに済み手間が省けるのではないかと思ったからですが、この方法は違っていますか? どなたか詳しい方がいらっしゃいましたらご教示いただけないでしょうか? お手数をおかけして申し訳ありませんがよろしくお願いいたします。

  • Access2000 サブフォームで選択したレコードをコピーするには?

    フォームにサブフォームとボタンを配置しています。 サブフォームには複数のデータが表示してあります。 コピーしたいレコードを1つ以上選択して、ボタンを押下したときに現在表示しているレコードの下に 選択したレコードをコピーして追加したいのですが、その方法が分りません。 ご存知の方がいらっしゃいましたら、教えてください。 宜しくお願い致します。

  • Accessのサブフォーム

    教えてください。 フォームの中にサブフォームを作っているのですが(入力用の)、 サブフォーム内のテキストボックスは、1件目のデータと新規レコード が表示されています。 この新規レコードのテキストボックスを表示しない方法はありますか? 2件目以降のデータ(新規レコード)を入力する際は「追加」の コマンドボタンを使用して、その都度、新規レコードを表示させたい のです。 よろしくお願いします。

  • ACCESSのサブフォームについて

    ACCESSにおいて、サブフォームにデータを表示させた状態で、あるレコードをダブルクリックで選択させ、 そのデータ(対象レコード)をメインフォームに戻って使用させるにはどのようにしたらよろしいのでしょうか? サブフォームの該当箇所に、ダブルクリック時イベントを貼り付けて、 制御をメインフォームへ移すのでしょうか。 よろしくお願いします。

  • サブフォームの新規レコードに移動したい アクセス

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"F_SubForm"です。 サブフォームはデータシートビューです。 VBAコードは Private Sub cmd_test_Click() DoCmd.SelectObject acForm, "F_SubForm" DoCmd.GoToRecord , , acNewRec End Sub です。 上記コードを実行すると DoCmd.SelectObject acForm, "F_SubForm" の部分で、 「実行時エラー 2489  オブジェクトが開いていません。」 となります。 だからと言って、 DoCmd.GoToRecord , , acNewRec だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • Access2010 帳票サブフォームで

    Access2010 SP1を使用しています。 帳票サブフォームを含むフォームを作成しています。 1.そのフォームを開いている時、VBAで実際のフォーカス(カーソルがあって直接入力できる位置)が メインフォームにあるかそれともサブフォームにあるかを判断する方法はありませんでしょうか? メインで入力中でもRequery時などで、サブフォーム内のコントロールでEnterイベントが起きてしまい、 本当はサブフォーム内でカーソルが当たって入力する時だけに実行したい処理が動いてしまうのです。 そこでサブのイベントの方にメインで入力中は実行せず、サブで入力している時のみ実行するよう IFで分岐を入れたいのですができますでしょうか? 2.フォームフッタを含む帳票サブフォームでレコードソースが0件の時、 そのフッタにあるテキストボックスへのEnter時にSelLengthやSelStart、Textプロパティが実行できません。 Enter時なのに「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」 と出てしまうのです。 0件でなければエラーが出ないのですがどうすれば出るようになるのでしょうか?

専門家に質問してみよう