• ベストアンサー

ACCESS2000のフォームの作り方について

OSは98SEでACCESS2000を使用しています。 Aという帳票フォームとBという単票フォームがあります。 A帳票フォームには製造指示日、原料番号、原料種類、原料重量という項目があり、データが表示されています。 B単票フォームには製造指示日、原料番号、原料種類、原料重量、開始日時、労務時間等A帳票フォームの詳細があります。 A帳票フォームのデータ1をクリックすると、Bという単票フォームに移動してデータ1の詳細が表示される様にしたくていろいろやってみようと思ったのですが、どの様にしたらよいかさっぱりわかりません。 どなたか教えていただけないでしょうか。 簡単なVBAはわかりますが、やさしく教えていただけるとうれしいです。 どうぞよろしくお願いいたします。

  • tokin
  • お礼率67% (38/56)

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

  • ベストアンサー
  • stork
  • ベストアンサー率34% (97/285)
回答No.4

コマンドボタンのウィザードを使いましょう。 1.A帳票フォームの詳細セクションにコマンドボタンを配置しする。 2.(ウィザードが立ち上がる) 3.フォームを開くを選択しB単票フォームを選ぶ 4.特定のレコードを表示するを選択し 5.どのカラムで関連付けるか選択する。 生成されたコマンドは以下のようになります。 ------------------------------ Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "B単票" stLinkCriteria = "[XXXXX]=" & "'" & Me![XXXXX] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub ---------------------------------------

tokin
質問者

お礼

storkさん回答ありがとうございます。 また、わかりやすい説明で助かりました。 早速使わせていただきました。 自分の中で、さっぱりわからないこともあり難しく考えていたので、 Storkさんの回答をいただいたときは、えっ?これでできるの?というかんじでしたf^^; 本当に助かりました、今後ともよろしくお願いいたします。 ありがとうございました。

その他の回答 (3)

回答No.3

補足します。 サブフォームの作り方 ・新規作成からフォームウィザードで必要なテーブルを選択する。 ・必ず単票形式で作成する。 ・サブフォームをデザインビューで開けて、フォームのプロパティ の中から書式→既存のビューで「データシート」を選択します。 メインの作り方 ・新規作成→デザインビューで新たにメインフォームを作成。 ・デザインビューでツールボックスからサブフォーム/サブレポート を選択し貼り付けるサブフォームのプロパティでデータのソースオ ブジェクトを先に作ったサブフォーム名を選択する。 原料番号が単票形式だと1テキストボックスだけになるのでプロパ ティのイベントのダブルクリック時に↓を記述する。 Private Sub 番号_DblClick(Cancel As Integer) Dim lngID As Long lngID = Me.原料番号.Value 'フォームの原料番号フィールドの値を変数に格納 DoCmd.Close acForm, "フォームA" 'Aのフォームを閉じます。 DoCmd.OpenForm "フォームB", acNormal, , "原料番号=" & lngID 'フォームBを開く際にフォームAの原料番号とフォームBの原料番号を「=」にする。 End Sub これでWクリックした原料番号がフォームBに返されます。 上記の記述は応用が利きます。ので色々使って見てください。 もし間違っていたら追記してください。

tokin
質問者

お礼

補足ありがとうございます。 初心者な私にはちょっとわからないところがあったのですがとても参考になりました。 今回は急いでいることもあり、storkさんの方を使わせていただこうと思います。 また、教えていただいたやり方を自分なりに勉強させていただき、後々活用させていただこうと思ってます。 本当にありがとうございました。

回答No.2

詳しい状況がわからないので 簡単な検索閲覧方法を記述します。 1.帳票フォームにフォームフッターを右クリックから選択して付 けます。そこにコンボボックスを付け原料番号を検索キーとして プロパティの『データ』の値集合ソースを「...」から選択し原料 番号「元テーブル名」に設定します。 『書式』の列数を2にして、列幅を1cm;2cmにして、リスト幅を4cmに します。 ↑でコンボボックスが完成し選択も出来るはずです。 まだ連結していませんので↓ Private Sub 移動先_AfterUpdate() DoCmd.ShowAllRecords DoCmd.GoToControl "原料番号" DoCmd.FindRecord Me![移動先], acAnywhere, , acDown End Sub フォームを「デザインビュー」に戻し、[移動先]コンボボックスの [更新後処理]イベントプロシージャに記述します。 以上が簡単な検索方法です。 この後に前に記述した↓ >Dim lngID As Long >lngID = Me.id.Value 'フォームのidフィールドの値を変数に格納 >DoCmd.Close’Aのフォームを閉じます。 >DoCmd.OpenForm "テストB", acNormal, , "id=" & lngID > 'OpenFormの第4引数に抽出条件をセットします。 >解説するとidというテキストBoxを付けてあげてキーとします。 >それを元に同じ内容のBのFormを開くことが出来ます。 を連動させると次フォームが開けます。 (例) Private Sub 移動先_AfterUpdate() Dim lngID As Long DoCmd.ShowAllRecords DoCmd.GoToControl "原料番号" DoCmd.FindRecord Me![移動先], acAnywhere, , acDown '↑必要があればのお話です。 lngID = Me.原料番号.Value 'フォームの原料番号フィールドの値を変数に格納 DoCmd.Close acForm, "フォームA" 'Aのフォームを閉じます。 DoCmd.OpenForm "フォームB", acNormal, , "原料番号=" & lngID End Sub 正しい方法では無いと思いますが、最初に覚えた方法なので・・・ご了承ください。 上記の方法を転用すると仮定してクリックした居場所の「クリック時イベント」に 記述すれば使えるかと・・・思います。 もしそれ以上をご希望ならばサブフォームを使用する方法が効率的 だと思います。 (例)サブフォームを作る方法 1.TBL・クエリをデータシートで作成しておきます。 2.新しいフォームをデザインビューから作成しツールボックスから サブフォーム/サブレポートを選択し最初に作成したサブフォームを 選択します。 3.検索キーもしくはサブフォーム内のクリック動作で次フォームに 移動するのが良いと思います。 ※ただし、説明がだいぶ長くなりますのでご希望であれば追記して下さい。 注意)自信はありませんので・・・。

tokin
質問者

お礼

丁寧なアドバイスありがとうございます。 早速試して見たいと思います。 不明な点等また質問させてください。

  • kirin3
  • ベストアンサー率25% (8/32)
回答No.1

よくわからないけれど、 フォーム選択    → デザインクリック → プロパティ表示 → イベントタブクリック→ クリック時...ボタンクリック で、 コードビルダを立ち上げて、 データ1_click() show B じゃだめですか? Aを見せたくないなら   hide A とか・・・。 もっと簡単な方法があるのかなぁ? 全然やりたいこと違ったらごめんなさい。

tokin
質問者

お礼

早速のアドバイスありがとうございます。 早速試してみたいとおもいます。 また、よろしくお願いいたします。

関連するQ&A

  • 単票フォームと帳票フォームを連動 アクセス

    どういう構成にすればいいか教えてください。 元データはT_testのみですが T_testを元に、単票フォームと帳票フォームを作り、 この二つのフォームをサブフォームにし、1つの親フォームにはめて、 帳票フォームのレコードをクリックする(カレントレコードが変わる)度に 単票フォームは、帳票フォームのデータを表示させたいのですが どうすればいいでしょう? レコードソースは親フォームに設定すればいいのでしょうか? それとも単票フォームと帳票フォームそれぞれにT_testを設定すればいいでしょうか? 帳票フォームのレコードをクリックして単票フォームのデータを表示させる際は、 帳票フォームの値を取得して単票フォームにフィルタをかければいいのでしょうか?

  • アクセスで指定したレコードをフォームで開く方法?

    アクセスで、帳票形式のフォームで選択したレコードの内容を、詳細を表示する用のフォーム(単票形式)で開きたいのですが、どうしたらよいのでしょうか?(初心者です) 例えば、帳票形式のフォームで「予約番号:1」のレコード 選択した状態で、ボタンをクリックすると、 詳細を表示する用の単票形式のフォームの「予約番号:1」のレコードが表示されるようにしたいのです。 マクロでは出来なそうなので、VBAで・・・というところまでしか検討がつきません。 使用しているのはアクセス2002です。 どなたかご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。

  • Accessのフォームについて

    Access2002のフォームについて質問します。単票形式、表形式、データシート形式、帳票形式とありますが、単票形式、表形式は、だいたいどんなものかイメージができるのですが、データシート形式、帳票形式とはどんなものですか?またどんな時にこの形式にするのでしょうか?単票形式、表形式との違いはなんでしょうか? 教えてください。お願いします。

  • Accessのフォームのことで・・・

    Accessでフォームを作成したいのですが、 表形式で作成すると 問題番号 解答 1     A 2     B 3     A 4     C 5     A 6     C 上記のようなフォームは作成できるのですが、 問題番号 1 2 3 4 5 6 解答    A  B  A  C A  C と言うような、横並びのデータにしたいのですが、良い方法はないでしょうか? 今は、問題番号1を抽出してフォームを単票で作成し、また、問題番号2を抽出して、単票で作成し、それを問数分作成し、サブフォームとして、それぞれを並べて作成しているのですが、問数が25あり、もっといい方法あればと思い質問させて頂いています。 よろしくお願い致します。 (Accessのバージョンは2000~2003までOKです)

  • Access2000 単票フォーム上のボタンを押すと、同じIDを持つフォームが開くよういしたい

    Accessの初心者です。 本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。 宜しくお願いします。 請求書番号連番を取得するフォーム(テーブルも)があります。 請求書番号は特殊な為、現時点ではじか打ちで作成しています。 それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。 その二つは、請求書番号でひもづけています。 <請求書番号連番取得フォーム/帳票> ・請求書番号 ・請求日 ・顧客ID <請求データの入力フォーム_A社/単票> ※これがB社、C社と複数存在します。 ・顧客ID ・請求書番号 ・商品CD <請求書番号連番取得フォーム/帳票>上にボタンをつくり、そのボタンを押すと、 同じ顧客IDを持つ<請求データの入力フォーム/単票>が開けたらな・・・と思っているのですが、 わかりますでしょうか・・・・。 どうか、宜しくお願い致します。 <請求書番号連番取得フォーム/帳票> _________________________________________________________________ 請求書番号|請求日 |顧客ID|  _________________________________________________________________ 09BB87ZZ1|2009/04/01|0001 |■(ボタン) -------------------------------------------- 09BS87AA2|2009/04/10|0003 |■(ボタン) -------------------------------------------- ↑この1行目の■(ボタン)を押すと、顧客ID「0001」の請求書番号「09BB87ZZ1」の単票フォームが開き、 (請求書番号欄に「09BB87ZZ1」が入っている。) 2行目の■(ボタン)を押すと、顧客ID「0003」のフォームを開く・・・というような動きです。 説明が下手で申しわけありません。 お願いします。

  • 帳票から単票フォームへの表示がうまくいきません

    ACCESSを始めたばかりです。 帳票表示されているレコードを単票フォームで表示させたいです。 テーブル「売上データ」がありこのテーブルを使って帳票用と単票用のクエリを作成、それぞれに対してフォームを作っています。 「売上データ」には、オートナンバーで No があり、これを主キーにしてあります。 クエリ Q帳票   フォーム F帳票 クエリ Q単票   フォーム F単票 フォームF帳票には、レコード内にボタンをおきました。 ボタンには、下記のマクロをつくって イベント クリック時 のところにいれました。 マクロ フォームを開く  フォーム名 :F単票  ビュー   :フォームビュー  フィルタ名 :  Where条件式 :[No]=[Forms]![F帳票]![No]  データモード:  ウィンドウモード:ダイアログ フォームF帳票 で、検索窓を作って検索した一覧の中から単票表示したいレコードのボタンをクリックして単票フォームをダイアログで開かせたいです。 上記のようにやってみたのですが、単票フォームは開くもののデータは空白になってしまいます。 ちなみに、作ったマクロを実行してみると Forms!F帳票!No とパラメータの入力を求められるので適当な数字をいれるとその数字に該当した単票フォームが開きます。 WEBで探して同じような感じで作ってみたのですがうまくいきません。 どこが間違っているのでしょうか? ちなみにクエリ Q単票 の Noの抽出条件に[Forms]![F帳票]![No]をいれてみたりもしましたがうまくいきませんでした(空白で単票が開く) 何卒よろしくお願いします。

  • [Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには

    Accessにおいて。 帳票フォームの"詳細"に非連結のコントロール(例:テキストボックス)を配置し、それぞれ別々の値を持たせることは可能なのでしょうか? 例えば。 VBAにおいて、カレントレコードのAという値とBという値を計算し、その値を非連結のテキストボックスに挿入したとします。 単票フォームであれば、問題なくテキストボックスには計算後の値が表示されるわけですが…… 帳票フォームの場合では、"規定値"に計算式を入れたときと同様、先頭の値と同じものが連続するテキストボックスに表示されてしまいます。 これを回避し、計算後のデータを連続するテキストボックスにそれぞれの値として表示させるには、どのようにすればよいのでしょうか? もちろん、連結させたコントロールを使用すれば、問題はないのですが…… 状況によっては、これが行えた方が便利かと思い、質問させていただきます。 「帳票フォームでは不可能である」といった回答でもかまいません。 どうぞよろしくお願いいたします。

  • アクセス データの競合を非表示にしたい

    帳票フォームを開いてる状態で 現在選択しているレコードを 新たなフォームで単票フォームとして開いて、 データを変更して保存しようとすると データの競合と言うダイアログが毎回出てしまいうっとうしいのですが これを非表示にする方法はありますか? 多分、帳票フォームを開くことで、テーブルを使っている状態にしているのに、 さらに単表フォームでデータの変更をしようとしてるからこのようなダイアログが出るのだと思います。 このダイアログを非表示にできないのなら、何か対策はありますか? 一覧で表示されるデータを選択し、そのデータの詳細を開き、詳細画面でデータの更新が終了したら もとの一覧の画面に戻りたいです。

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

  • サブフォームにした方がいいのか親フォームがいいのか

    単票・帳票フォームで使う場合、 サブフォームにした方がいいのか親フォームのままのほうがいいのか。 アクセスでフォームでデータを表示する際に、 フォームのデータシートビューの場合は、 フォームヘッダーにコントロールを置けないから、 データシートをサブフォームとして、親フォームに乗せてコントロールを設置しますが、 単票・帳票フォームの場合は、フォームヘッダーにコントロールが置けますよね。 その場合でもデータシートビューのように サブフォームにした方が良いのでしょうか? そもそもどういう時にサブフォームにした方が良いのかわかりません テーブルやクエリのデータをフォームとしてデータシートビューで表したい上、 コントロールも設置したい時にサブフォームにするべきで、 それ以外(単票・帳票フォーム)はフォームのまま使うべきでしょうか? 添付の画像は、 帳票フォームをサブフォームに載せずにコマンドボタンなどを置いたバージョンです。