こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSの初心者です

accessの初心者です。

今、テーブルを一つ作りました。
フィールドはA、B(共にテキスト型)の2種類です。

AとBは1対1です。

レポートを作成して印刷したいのですが
Aを入力すれば、Bが自動的にAの下に出力される物にしたいです。

それにはどのような手続きをとればいいのでしょうか?
A,B以外の体裁はラベルで作りました。
あとはA,Bだけです。

どうかお願いいたします。

投稿日時 - 2011-05-17 05:10:46

QNo.6743323

すぐに回答ほしいです

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

>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のリファレンスで、ヘルプの丸写しみたいなものですが、ヘルプで探すより、本で探したほうが早いから、、という程度なので、なければないでも良いかもしれません。私は今はこればっかりですが。

投稿日時 - 2011-05-19 16:10:50

お礼

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

投稿日時 - 2011-05-19 21:30:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

No.1です。 誤解がないよう、補足をします。

>ですがこれではAを入力してBが自動で出てくるわけではないようですね。

「自動」の解釈によりますが、検索エンジンのようにキーワードを入れてenterや「検索」ボタンをクリックするのと同様のもを「自動」というのであれば、今回のものは「自動」だといえます。

ボタンをクリックするのが嫌ならば、別のイベントを使用すると良いかと思いますが、当然のことながらイベント(きっかけ)で動作するので、きっかけがなくとも動作することを「自動」とするならば、実現は不可能です。「指定された時間が経過したら」発生するイベントもありますので、それらを上手く使えば好みの動作は出来そうですが。

フォーム内にテキストボックスに入れたAの値に対応するBの内容を表示することも可能です。つまり、フォームで内容を確認してから、印刷用にレポートを作成することもできます。

投稿日時 - 2011-05-18 08:50:58

補足

>フォーム内にテキストボックスに入れたAの値に対応するBの内容を表示することも可能です。

Aを入力してエンターキーを押せば
BがAの下に自動的に出てきて印字できたらと思っていました。

ACCESSの本を8冊買いましたがまだそこまで到達できません・・・。
そもそも初心者本に載っているかどうかも目次を見て不安です。

載っていそうな本とかご存じないでしょうか?

投稿日時 - 2011-05-19 07:14:25

ANo.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は空欄になります。
また、他のキーワードでの表示をしたい場合、毎回レポートを閉じないと更新されません。

これは本当に最低限の作りで、問題も出てくるかと思いますし、もっと使いやすいやり方もあると思いますが、それは後々身につけていくとして、基本的な流れを覚えて、そこから枝葉をつけていく方が良いと思い、今回の様な構造にしました。

投稿日時 - 2011-05-17 09:30:29

補足

詳しい解説ありがとうございます。

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

ありがとうございました。

投稿日時 - 2011-05-18 05:36:09

あなたにオススメの質問