• ベストアンサー

ACCESSの初心者です

accessの初心者です。 今、テーブルを一つ作りました。 フィールドはA、B(共にテキスト型)の2種類です。 AとBは1対1です。 レポートを作成して印刷したいのですが Aを入力すれば、Bが自動的にAの下に出力される物にしたいです。 それにはどのような手続きをとればいいのでしょうか? A,B以外の体裁はラベルで作りました。 あとはA,Bだけです。 どうかお願いいたします。

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

  • ベストアンサー
  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.3

>Aを入力してエンターキーを押せば >BがAの下に自動的に出てきて印字できたらと思っていました。 からくりみたいになるのですが、 1.Bを表示するためのテキストボックスBを準備。 2.テキストボックスBを不可視にする。 3.「イベント」の「キークリック時」に Enterが押されたら、 Aを入力するためのテキストボックスAの値をもとに、 テーブルから該当するBを抽出し、テキストボックスに代入した上で、可視にする。 以上の様なコードを書く。 とできます。 私が書いたコードをちょこっといじれば出来ます。 >ACCESSの本を8冊買いましたがまだそこまで到達できません・・・。 >そもそも初心者本に載っているかどうかも目次を見て不安です。 >載っていそうな本とかご存じないでしょうか? Aceessは同じ処理をするのに、複数の方法がある場合が多く、VBAでの記述の仕方もいくつもあるので、使い始めの頃は本で見るとどれが正しいのかわけが判らなくなるなりますね。 大抵どれでも一緒か大差ないことが多いのですが。 学習のコツとしては、一通り、テーブル/クエリ/フォームを作れるようになったら、早い段階でVBAを覚えることだと思います。その際にデータ操作はDAO/ADO(ADOX)とあるのですが、何も考えずにADO(ADOX)を使うようにしてください。 その上でおすすめの本は、「アッと驚く達人の技 AccessVBA 実践技&上級技大全(ISBN4-8163-3656-7 ナツメ社)」ですね。ずいぶん前の本なので、今あるのか、その最新版が出ているのかは判りませんが、表題どおり、実用的な技がたくさん紹介されています。 あとは、さらに古いですが、「AccessVBA2000リファレンス(ISBN4-7561-3193-X (株)アスキー)」 は、AccessVBAのリファレンスで、ヘルプの丸写しみたいなものですが、ヘルプで探すより、本で探したほうが早いから、、という程度なので、なければないでも良いかもしれません。私は今はこればっかりですが。

yuukiyuuki
質問者

お礼

色々ありがとうございます。 その本を入手して勉強しようと思います。 ありがとうございました。

その他の回答 (2)

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.2

No.1です。 誤解がないよう、補足をします。 >ですがこれではAを入力してBが自動で出てくるわけではないようですね。 「自動」の解釈によりますが、検索エンジンのようにキーワードを入れてenterや「検索」ボタンをクリックするのと同様のもを「自動」というのであれば、今回のものは「自動」だといえます。 ボタンをクリックするのが嫌ならば、別のイベントを使用すると良いかと思いますが、当然のことながらイベント(きっかけ)で動作するので、きっかけがなくとも動作することを「自動」とするならば、実現は不可能です。「指定された時間が経過したら」発生するイベントもありますので、それらを上手く使えば好みの動作は出来そうですが。 フォーム内にテキストボックスに入れたAの値に対応するBの内容を表示することも可能です。つまり、フォームで内容を確認してから、印刷用にレポートを作成することもできます。

yuukiyuuki
質問者

補足

>フォーム内にテキストボックスに入れたAの値に対応するBの内容を表示することも可能です。 Aを入力してエンターキーを押せば BがAの下に自動的に出てきて印字できたらと思っていました。 ACCESSの本を8冊買いましたがまだそこまで到達できません・・・。 そもそも初心者本に載っているかどうかも目次を見て不安です。 載っていそうな本とかご存じないでしょうか?

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

>A,B以外の体裁はラベルで作りました。 これは「レポート」で作ったのでしょうか? >Aを入力すれば、Bが自動的にAの下に出力される物にしたいです。 このような入力は「レポート」では出来ません。 レポートはあくまで指定された範囲のソースを表示/プリントアウトする機能です。 そこで、「フォーム」を使います。フォームでAの値を入れて、ボタンを押すと該当するデータのみをレポートとして表示する、、というアプローチです。 手順としては 1.レポートを完成させてください。(名称は仮にレポート0) そのままレポートを実行すると、全部のデータが表示されるとおもいますが、構いません。 2.空のフォームを作り(デザインビューでフォームを作成)、テキストボックスを一つ(仮に名称は「テキスト0」、ボタンを一つ(仮に名称は「ボタン0」)を作ります。 体裁はお好みで。 3.ボタン0のプロパティで「イベント」→「クリック時」の右の「...」をクリックして、「マクロビルダ」を選びます。 4.マクロを編集する画面になりますので、一番上の行で、「レポートを開く」を選びます。 そうすると、画面下に各項目が出来るようになるので、以下のようにしてください。 レポート名:レポート0 ビュー:印刷プレビュー フィルタ名:(空欄) Where条件式:[テーブル0]![A]=[Forms]![フォーム0]![テキスト0] ウインドウモード:標準 マクロを保存して閉じます。(恐らくマクロ1という名前で保存されます。) フィールドA、Bがあるテーブル名は「テーブル0」としています。 試しにフォームにいろいろ入力してテストして下さい。 もし、該当するデータがないばあいは、レポートのA/Bは空欄になります。 また、他のキーワードでの表示をしたい場合、毎回レポートを閉じないと更新されません。 これは本当に最低限の作りで、問題も出てくるかと思いますし、もっと使いやすいやり方もあると思いますが、それは後々身につけていくとして、基本的な流れを覚えて、そこから枝葉をつけていく方が良いと思い、今回の様な構造にしました。

yuukiyuuki
質問者

補足

詳しい解説ありがとうございます。 ですがこれではAを入力してBが自動で出てくるわけではないようですね。 こちらでももう少し勉強しようと思います。 ありがとうございました。

関連するQ&A

  • accessのクエリで入力が不可能…

    【テーブルA】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔テキスト型〕 フィールド4〔数値型〕 【テーブルB】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔数値型〕 フィールド4〔テキスト型〕 となっています。 両方のテーブルを使い、クエリを作成しました。 リレーションが、テーブルAのフィールド1と、テーブルBのフィールド3に設定してあります。 このようにして作成したクエリでデータの入力ができません。 なぜでしょうか? Access2000です。

  • Access レポート印刷時のイベントについて

    お世話になります。 Access VBAにて以下の処理を行ってます。 1.フォーム上のテキストボックスに数値を入力しボタンを押す。 2.ボタンが押されたらテーブルAを作成(入力された数値分レコード作成)。 3.テーブルAの『連番』フィールドに、テーブルBの『番号』の次の番号から連番でふる。 4.テーブルAの『連番』の最後の番号を、テーブルBの『番号』に上書きする。 5.テーブルAをソースとしてレポート(印刷プレビュー)を表示。 そこで質問ですが、上記の処理だとレポートを表示するだけでもテーブルBの『番号』が更新されてしまいます。本来であれば、レポートが印刷されたタイミングで更新したいところです。 ※レポートを印刷せず、×で閉じられたような場合は更新させないようにしたい。 レポート上で右クリック⇒印刷、もしくは、レポートを開いている状態でメニューの印刷ボタンが押されたタイミング、ファイル⇒印刷のタイミングで、テーブルBを更新することは可能でしょうか。 ご教授の程、宜しくお願い致します

  • アクセスのレポートで・・

    アクセスのデーターをラベル印刷するにあたって困っております。多分何か簡単な設定で解決できるのだと思って・・アドバイス頂けましたら幸いです。 まず、テーブル構成は ------------------------------- ID :オートナンバー 案件1:テキスト 案件2:テキスト 案件3:テキスト 案件4:テキスト 案件5:テキスト -------------------------------- となっており、案件1から5には文字が入力されております。(約20行のデーターを入力してます。) このテーブルを元に宛名ラベルウィザードで5列からなるレポートを完成させたのです。 レポートイメージは下記のような感じです。 -------------------------------- 案1 案2 案3 案4 案5 □  □  □  □  □ □  □  □  □  □ □  □  □  □  □ -------------------------------- そこで印刷した結果を見てびっくり。。 テーブルの案件1に入力された文字が”あいうえお”  〃   〃 2に 〃  〃   ”かきくけこ”  〃   〃 3に 〃  〃   ”さしすせそ”  〃   〃 4に 〃  〃   ”たちつてと”  〃   〃 5に 〃  〃   ”なにぬねの” とすると、レポート印刷では上記のレポートイメージのように1つ1つのラベルにテーブルのデーターが印字されるものと思ったら、1つのラベルに、”あいうえおかきく”というように自分のデーター”あいうえお”以外にも隣のデーターである”かきく”までも表示し印刷されてしまって困ってます。 ちなみに、そのレポートのコントロールソースを見てみると(=Trim([案件1] & [案件2] & [案件3] & [案件4] & [案件5])というようになっております。 どうしたら1つのラベルに1つのデーターのみを印字させることが出来ますでしょうか。

  • アクセスVBA テキストボックス入力値からの参照

    マイクロソフトアクセス初心者です。 現在、アクセスでデータベースを作成しています。 2つのフォーム(フォーム(1)、フォーム(2))、2つのテーブル(入力情報、マスタ)、2つのテーブルをもとにした1つのレポートを作成しています。 『フォーム(1)』のテキストボックスAに入力された値を、Dlookup関数で『フォーム(2)』のテキストボックスBに数値を参照しています。 『フォーム(2)』のテキストボックスに表示された値を、『フォーム(2)』に設置されたコマンドボタンをクリックすると、VBAで『テーブル入力情報』のフィールドAに入力されるようにしています。フィールドAについてのマスタとなるテーブルが『テーブルマスタ』です。 リレーションシップを設定せず、ただ単に値を入力することは出来るのですが、レポートを作成するにあたって、『テーブル入力情報』と『テーブルマスタ』のフィールドAに1(テーブルマスタ)対多(テーブル入力情報)のリレーションシップを設定したいと思っています。 リレーションシップを設定し、テキストボックスBに表示された数値を『テーブル入力情報』に入力する際、『テーブルマスタ』から該当するデータを選択して『テーブル入力情報』に入力されるようにしたいと思うのですが、現状では、リレーションシップを設定すると、入力値が真っ白になってしまい、レポートにも入力したデータが反映されません。 ちなみに、入力する際はフィールドA=Me.テキストボックスBのようにしています。 何か良い解決策がありましたら、是非教えていただけませんでしょうか? 分かり難い文章かと思いますが、どうぞ宜しくお願い申し上げます。

  • アクセス レポートで、並べ替え設定したフィールドは、表示しなくても大丈夫?

    お世話になります。Access2003です。 レポートの、並べ替え/グループ化の設定で、 1番めに昇順に並べたフィールドを、レポートには表示させたくない為、 デザインフィールドで、そのフィールドのテキストボックスとラベルを 削除したのですが、 これって問題ありますか? レポートの印刷ビューで見ると、1番目に昇順にしたフィールドで順序どおりになっているようですが・・ 内部できちんと処理されているのでしょうか?

  • アクセス レポートのデザインビュー

    たびたびすみません。Access2003です。 1、レポートのデザインビューで、詳細セクションから、各ヘッダーセクションに、テキストボックスを移動させても、   印刷されるフィールドの中身に支障はないのでしょうか? 2、レポートのデザインビューで、フィールドリストからフィールドを追加する場合、   ラベルをページヘッダー、テキストボックスを○○ヘッダーの様に、異なるセクションへ分けたいのですが、うまく分離できません。   これはこういうものなのでしょうか?

  • Access アクセスについてお伺いします。

    Access アクセスについてお伺いします。 テーブルで作成したデータをレポートで表示する際にマルで囲みたい場合、 どのようにすればよいのでしょうか!? 例 テーブルでフィールド名学年とする   内容に1年生、2年生、3年生と入力していく      レポートではラベルで1年生、2年生、3年生と作成しておき、   テーブルで1年生と記入したらレポートでは1年生の箇所に○がかかるようにしたいのですが・・・ 

  • MSアクセス SQLの書き方(UPDATE)

    MSアクセス2010 テーブルA フィールドA=テキスト型(4文字) テーブルB フィールドA=テキスト型(2文字) フィールドB=Yes/No型 テーブルBの2文字が、テーブルAの4文字に含まれていたら、テーブルBの全てのレコードのYes/No型をTrueにしたい。 rs.MoveNextでループを使わず一括でする方法はないですか? DoCmd.RunSQL "UPDATE テーブルB SET フィールドB=True WHERE (テーブルAの文字にテーブルBの文字が含まれていたら) みたいな感じで。

  • Access2002 255以上のフィールドをレポートで表示させたい

    Access2002を使っています。Accessは初心者です。 255以上あるフィールドをレポートでA3用紙(横)1枚におさめたいと思っています。 構造は,下の通りです。 テーブル1,テーブル2,テーブル3,テーブル4 クエリ1(テーブル1~3をもとに)・・・フィールドが200あります クエリ2(テーブル4をもとに)・・・・・フィールドが150あります 初心者判断で,クエリ1とクエリ2をもとに350あるフィールドを1枚のレポートにおさめるには,A3用紙の右側の部分にサブレポートを作成すると解決できるのではと考え,マニュアルを読んで,レポート1にサブレポートを追加する作業を進めました。しかし,「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが表示され作成できませんでした。 サブレポートの概念がよくわからないのですが,サブレポートにこだわらず,350もあるフィールドをA3用紙(横)1枚にレポートで出力できる最も簡単な方法があったら教えて下さい。何分,Accessは初心者なので,よろしくご教示下さい。よろしくお願いします。

  • Accessでグループ化した結果フィールドをつなげるには?

    Accessでグループ化した結果フィールドをつなげるには? Access2003で 区分/コード A/123 A/456 A/789 B/234 B/567 というテーブルがあり、グループ化すると、区分Aのコードは123、456、789、 区分Bのコードは234、567と表示や印刷することはできます。 (たとえば、フォームやレポートのサブフォームなどに各コードを表示することはできます) これを、 フィールド1/フィールド2 A/123456789 B/234567 というふうにコード部分を1つのフィールドにつなげることは可能でしょうか? 上記のように、区分Aのデータ件数は3件、区分Bは2件というように コードのデータ件数はまちまちですが、それに対応してつなげたいと考えております。 よろしくお願いいたします。

専門家に質問してみよう