• ベストアンサー
  • 困ってます

Access97でサブフォームのページ移動

Access97のおはなしです。 サブフォームを表形式で埋め込んでいます。 検索フォームを作成しサブフォームの項目で検索します。 検索結果よりメインのフォームに切り替える際に、 サブフォームの検索目標のあるページに移動することはできないでしょうか? たとえばの例ですが、 メインフォームは会社情報、 サブフォームは取扱商品といった感じです。 クエリーのページ移動ではページ番号は数字ではないとだめで「Like [商品名]」といったページの移動なできないんですよね。 なにかいい方法はありますでしょうか? ちなみにAccessBASICは全然分かりません(泣)

noname#5002
noname#5002

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数313
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.2
  • ARC
  • ベストアンサー率46% (643/1383)

補足ありがとうございます。 話を簡単にするため、最初にフォーム、コントロールの名前を決めときます。 検索フォーム (検索条件を入力するフォーム)  └検索条件 (検索する商品を入力するテキストボックス/コンボボックス) 会社一覧フォーム (取り扱い会社の一覧のフォーム。今回の回答には登場しません)  └表示ボタン (会社別商品を表示するためのボタン) 会社別商品フォーム (会社別商品のフォーム)  └商品一覧 (商品一覧を表示するサブフォームコントロール)    └商品名 (商品名を表示するテキストボックス) 普段から何でもVBAでやってしまうクセがついているので、ちょっと失念していましたが、実は複数フィールドにまたがらない検索でしたら、マクロからでも可能でした。 マクロでするなら、こんな感じです。[表示ボタン]のクリック時に設定されているマクロの、末尾にでも追加してやるといいでしょう。 1行目  オブジェクトの選択   オブジェクトの種類: フォーム   オブジェクト名: 会社別商品フォーム   データベースウインドウ内: いいえ 2行目  コントロールの移動   コントロール名: 商品一覧 3行目  コントロールの移動   コントロール名: 商品名 4行目  レコードの検索   検索データ: =[Forms]![検索フォーム]![検索条件]   検索条件: フィールドの一部分   大文字小文字区別: いいえ   検索方向: すべてのレコード   表示書式で検索: いいえ   カレントフィールドのみ: はい   先頭からの検索: はい VBAでするなら、 1:[表示ボタン]のプロパティの[クリック時]を[イベントプロシージャ]にします。 2:横の[…]ボタンをクリック Private Sub 表示ボタン_Click() End Sub のようなモジュールが表示されます。Private Sub と、End Subの間の行にカーソルがありますが、この位置にコードを入力して、以下のような感じにします。 Private Sub 表示ボタン_Click()   Dim RST As Recordset      'マクロ名のところには、会社別商品フォームを開くのに使っているマクロの名前を記述してください。   DoCmd.RunMacro "マクロ名"   'マクロの「オブジェクトの選択」をVBAで書くと、こんな感じになります。   DoCmd.SelectObject acForm, "会社別商品フォーム", False      'サブフォームに表示されているレコードのコピー内容を取得します   Set RST = Forms![会社別商品フォーム]![商品一覧].Form.RecordsetClone      'データを検索します。'[商品名] LIKE '*みかん*' みたいな感じです。   RST.FindFirst "[商品名] LIKE '*" & Forms![検索フォーム]![検索条件] & "'"      '一致するレコードが発見できなければ、この時点で処理終了です   If RST.NoMatch = True Then     Exit Sub   End If      'サブフォームのレコードを移動します   Forms![会社別商品フォーム]![商品一覧].Form.Bookmark = RST.Bookmark      '見つかったレコードを選択状態にします。   RunCommand acCmdSelectRecord End Sub も少し詳しく、とか、エラーが起きたとか、ありましたら、補足してください!

共感・感謝の気持ちを伝えよう!

質問者からのお礼

まいどまいどご丁寧なご回答ありがとうございます。 早速試してみますね。 また疑問点があった際は、 お手数ですがご質問させていただきますので、 よろしくお願いします。

関連するQ&A

  • accessサブフォームでのパラメータ

    皆様いつも的確なアドバイスありがとうございます。 Access2002について質問させて下さい。 パラメータクエリを作りました。 そのクエリをサブフォームに埋め込み、ボタンを押すと、クエリが組み込まれたフォームが立ち上がるという仕組みを作りました。 クエリ単体で動かすときちんとパラメータが現れ、製造記号を入力すると、それに該当する製造番号の商品が現れます。パラメータは次のとおりです。 Like [製造番号検索] & "*" クエリでは不都合は無いのですが、 そのクエリをサブフォームに埋め込んだフォームを開こうとすると、同じパラメータが2度現れてしまいます。 サブフォームに関する特性があるのでしょうか? もしくは、パラメータの設定が悪いのでしょうか? 今はフィルタで無事動いているのですが、どうして出来ないのかが知りたいのです。 ご指南宜しくお願いします。 haru

  • ACCESSのサブフォーム教えてください☆

    お世話になっております。 メインフォームではなくサブフォームの抽出方法で、コンボボックスでサブフォームのフィールド(例えば、商品名)を選択後、テキストボックスで文字列(例えば、ソフトクリーム)を指定して検索する方法です。メインフォームでのやり方は調べて(VBA)分かったのですがサブフォームは試行錯誤してやってみたのですがうまくいきません。 すみませんが、宜しくお願いします。

  • Access データアクセスページでサブフォーム

    タイトル、可能文字数が少なくて入れにくいですね。 と、愚痴ってしまいましたが、質問の内容は以下のとおりです。 環境: ・Win Xp Pro ・Access2002 顧客情報を表示、検索するフォーム(サブフォームあり)を作成しました。 あまりセキュリティ上、ガチガチのロックは必要ない情報ですので、DBパスワードのみ設定しています。 ただ、フォームのデザインを弄られたくないのと、利便性を考え、データアクセスページに変換しようと思っています。 ただ、上記顧客情報のフォームを、「名前をつけて保存」し、データアクセスページ形式を選択したところ、サブフォームが無視されてしまいました。 そこで、ウィザードを使って作ろうとしましたが、基になるクエリがひとつしか選択できないため、サブフォーム(別クエリが基になっており、メインフォームと顧客番号でリンクさせています)を追加できません。 ネットで調べても、あまり有意義な回答を得られませんでしたので、質問させていただきました。 ご存知のかたがいらっしゃいましたら、ご教授下さい。 よろしくお願いいたします。

その他の回答 (1)

  • 回答No.1
  • ARC
  • ベストアンサー率46% (643/1383)

どもども、只今帰宅しました(笑) とりあえず、御質問の内容から、以下のようなアプリケーションを頭の中で浮かべたのですが、もしこれがお考えのものと異なる場合は、補足をお願いします。 ○テーブル構造の確認 「例えばの話」ですんで、こんな感じでテーブルがあるとします。 [会社]テーブル  会社ID(長整数型)  社名   : [取扱商品]テーブル  商品ID(長整数型)  会社ID(長整数型)  商品名(テキスト型)ホントは別に[商品]テーブルを作る   :       べきですが、便宜上ここに入れます。 で、双方の[会社ID]フィールドにリレーションシップが設定されている。とします。(メインフォームとサブフォームも、[会社ID]で関連付けられています) ○サブフォーム上でレコードの移動を行う? 例えば、商品名が「みかん」のレコードを検索したとして、 ・サブフォーム上に「みかん」が見つかれば、そのレコードに移動する。見つからなければ何もしない。 ・別の会社に「みかん」が登録されていたとしても、それは考慮しない。 という動作でいいんですよね? ○検索フォームの構造は? [検索商品名]というテキストボックスがあって、[検索]ボタン、[キャンセル]ボタンがあるものとします。 [検索商品名]に「みかん」と入力し、[検索]ボタンを押すと、商品名に「みかん」を含む商品を検索する。(Like 演算子を使用する) ってな感じでいいですか? ○お使いのAccess97はSR-2? Access97には「初期版」「SR-1」「SR-2」の3つのバージョンが存在します。 今回の処理では、「ブックマーク」を使おうと思ってるのですが、初期版と、(ひょっとしたら)SR-1では、バグのためにこの機能が使えません。(Access95,2000は大丈夫) お使いになる環境が、Access97 SR-2以降であると確定している、もしくはSR-2にアップグレード可能ならばいいんですが、そうでなければ別の方法を考えなければならないので、その旨補足してください。 ○VBAに対する心構えはOK? 数行程度のVBA(モジュール)を使用しようと思います。 意味不明な記号の羅列を見ただけで混乱したりはしませんよね?(笑) そういう人が身近にいるんで(^^; ってことで、補足ヨロシク!(今からお風呂た~いむ☆)

共感・感謝の気持ちを伝えよう!

質問者からの補足

基本的におっしゃるとおりです。 補足するとすれば、 まず「みかん」で検索したときに検索結果として「みかん」関連を取り扱う会社名の一覧が表示され、各会社名先頭にあるボタンをクリックすると詳細の情報として、画面左半分に会社情報、右半分にサブフォームで取扱商品が表形式で表示され、戻るボタンでまた検索結果の会社名一覧へという動作にしたいです。このときに「みかん」のある行に自動的にコントロールが移動しているのが理想です。なお「みかん」が複数行あることはありません。コントロールの移動以外は完成しています。ただ商品が何百とあったときに「みかん」の行へたどり着くのが大変になっています。 Access97はSR-2になっています。 BASICは触っていたことはあるのですがVBAなどWindowsライクなものは触ったとことはありません。

関連するQ&A

  • ACCESSで、メインフォームとサブフォームがあるとき・・・

    Accessで、メインフォームとサブフォームがあり、メ インフォームのテキストボックスで期間を指定し、再 クエリを行うマクロボタンでサブフォーム上に期間指 定したデータのみが表示されるようにしています。 また、Access起動時に開くフォームがあり、そのフォ ームに、先ほど上述したメインフォームが開くマクロ ボタンを作成したところ、パラメータの入力画面が出 てきてしまいました。 恐らく、サブフォームの抽出用のクエリに設定してあ るものだと思いますが、これが表示されないようにす ることは出来ないのでしょうか?

  • サブフォームが見えなくなる。

    サブフォームが見えなくなる。 Access初心者です。 メインフォームにサブフォームを入れ込んだのですが、メインフォームを新しいレコードに移動すると、サブフォーム自体が出てこなくなります。 データがあるレコードではきちんとサブフォームが出ていることが確認出来ています。 どうしていいのか判らないので教えて下さい。 マクロで入力ボタンを押すとメインのフォームを開き、新しいレコードに移動することをやっていますが、関係あるでしょうか? やりたいことはメインを新しいレコードに移動した時に、サブフォームが表示されて入力できるようにしたいということです。

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

    メインフォームとサブフォームのあるフォームを作成しました。メインフォームを入力してから、サブフォームを入力し、次のレコードへ移動するのにメインフォームの移動ボタンを押すと、次のレコードのカーソルがサブフォームのフィールドへ移動します。メインフォームに移動する方法はありませんか?

  • Accessでのサブフォーム内の再クエリについて

    Access上で新しいデータベースを作成中なのですが、サブフォーム内の再クエリが上手くできません。 2つのコンボボックスを連動させた物がサブフォーム内にあるのですが、この2つを連動させる為にどうしてもサブフォームでの再クエリが必要となります。 そして、その再クエリのマクロでのコントロール名がわかりません。 最初のコンボボックスを[果物]次のコンボボックスを[りんご]と仮定すると、 [果物]→再クエリ→[りんご]のような形になる為、コントロール名は[りんご]になるはずなのですが、サブフォーム内の[りんご]の為、なんと表現していいのかわかりません。その結果、上手く再クエリが働いてくれません。 コントロール名はなんと書けばよろしいのでしょうか? (何も書かなくても再クエリされないです…) Access初心者なのでわかりやすく言っていただければと思います。 長い質問になってしまいましたがよろしくお願いいたします。

  • Access2003サブフォームの質問です

    質問ですが、 Access2003 VBAで伝票入力を作成しています。 ヘッダーに日付・得意先、明細(サブフォーム)に商品コード・品名などを入力する画面ですが 商品名で同じものが複数が頻繁にあるので、商品名をダブルクリックしたら1行前の商品名 をセットするような仕様にしたいのですが、1行前の商品名取ってくるような事は出来るので しょうか? ご存知の方がおられたら、教えてください。 お願い致します

  • ACCESS2003でサブフォームを使う

    すみませんが教えてください。 親フォームの中に、サブフォームを作ります。 サブフォームにはクエリの内容が表示されています。 そのサブフォームの内容を、親フォームに表示させたいです。 (サブフォームをクリックすると、親フォームの内容も切り替わる) VBAが必要なのでしょうか。 もしそうであれば、参考になるページ、もしくはコードを教えていただけるとありがたいです。 現在、親フォームのほうには [Forms]![登録内容クエリ2フォーム]![登録内容マスタのサブフォーム] ![Forms]![内容]と設定しているのですがこのままではうまくいかないのですね;; ヨロシクお願いします。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

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

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

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

    とても初歩的な質問で申し訳ありませんが、誰か教えて下さい。 売上メインフォームの中に 「Aの商品のサブフォーム」 「Bの商品のサブフォーム」 「Cの商品のサブフォーム」 「Dの商品のサブフォーム」 と作ってあります。 各小計はメインフォーム内に出しております。 メインフォームの累計をフォームフッターに出すのですが、A~Dの商品の売上が無い場合(小計が出ない場合) フォームフッターの累計に合計が反映しません。 どのような式を入れれば、良いのでしょうか? どなたか教えて下さい。

  • サブフォーム内の再クエリー

    メインフォームに仕入先コードのコントロールを配置し、サブフォームに商品コードがあります。 メインフォームの仕入先コード(コンボボックス)を選択した時に、サブフォームの商品コード (コンボボックス)に表示される商品を指定した仕入れ先の商品のみ抽出する為に 仕入先コードの更新後処理に再クエリを実行しているのですがサブフォーム内の商品コードが 更新されません。 再クエリのコントロールとして、サブフォームを指定してみましたが、やはり駄目でした。 どのように指定すれば、意図した動きになるのか、お分かりになる方がいましたら、 ご教授の程、お願いします。

専門家に質問してみよう