Accessのフォームを使って住所録から,データを抽出し,その結果をまず表示,その後ラベルシールに印刷をしたいのですが,フォームでの検索は,テーブルのすべての項目について複数の項目を同時検索をできるようにしたいです。
テーブルの構造はごく普通の住所録です。データ件数は8万件ほどです。
どういう方向で作業を進めるべきか分からないのですが,こういった場合は,まず,検索用のフォームを作成し,コマンドボタン(検索・印刷)を配置して,
それに対してイベントかマクロの記述をするんだろうなとは思うのですが・・・
私が思うに,抽出結果を格納するテーブル・検索フォーム・ラベル印刷用のレポートが必要なのだろうと思いますが,それらが何でつながっていくのかが分かりません。参考書などでは,一つ一つのことが別々に書いてあって作業の全体像が分かりません。作業の方向と必要なスキルが同程度などか詳しい方教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まず、検索結果を格納するテーブルはなくても大丈夫ではないでしょうか。



色んな方法が考えられますが、自分だったらこうするという方法で...

仰るとおり、検索用のフォームを作成します。検索結果のフォーム、ラベル用のレポートは条件を考えずに全部のレコードを表示するようなレコードソースでいいと思います。検索条件になるフィールドは全部持たす必要がありますし、フォームやレポートに表示する必要がなくても、非表示で配置して下さい。

検索条件フォームで入力した条件を元に、検索ボタンのクリック時のイベントプロシージャで
Dim strWHERE As String
strWhere=""
strWhere=strWhere &"([名前] ='"& forms![F_検索条件]![名前] &"')"
strWhere=strWhere &"AND (都道府県='"& forms![F_検索条件]![都道府県] & "')"
みたいなWHERE句を生成し、その条件で検索結果のフォームをOpenFormで開きます。

ラベル印刷ののレポートも同様ですね。検索結果から印刷するようにするのでしたら、検索結果のフォームに印刷ボタンを配置して、そのクリック時のイベントプロシージャでOpenReportのWHERE句の引数部分に上記の条件を指定して下さい。
    • good
    • 0

一応、一通りのことを書きます。



(1)条件入力と結果表示用のフォームを作成。これはひとつのフォームでいいでしょう。このフォームには複数の条件入力フィールドと[検索]ボタン、結果表示用のフィールド、[印刷開始]ボタンがあればいいでしょう。アプリを終了するボタンもあるとカッコがつくでしょうか?
(2)[検索]コマンドボタンを配置し、クリック時イベントにて、条件に入力された値を元にしたSQL文を構成・クエリを作成します。
(3)結果表示のフォームのソースは(2)で作成したクエリにします。検索結果をわざわざテーブルに保存する必要はないでしょう。テーブルにする場合、結果をインサートしないといけなくなるので、処理が遅くなります。
(4)検索結果表示後は、[印刷開始]ボタンのクリックイベントでレポートを開けばよいです。このレポートのデータソースは、もちろん検索結果のクエリです。

カンタンに一通りの流れはこんな感じですが、当然、条件入力値のチェックだったり、検索結果0件時は印刷しない、とかいうロジックも必要です。
マクロでもできるでしょうが、ココはひとつVBAをゴリゴリ書いて、素敵なものを作っちゃってくださいな。
不明な点はまた書き込んでください。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMicrosoft Word のはがき宛名印刷で、住所録を登録する方法

Microsoft Word のはがき宛名印刷で、住所録を登録する方法が分かりません。
データベースは、SQL Server なのですが、データをCSVファイルにすることができますので、CSVファイルのデータから印刷する方法で構わないのですが...。

Aベストアンサー

CSVファイルなら、Excelの住所録データにして差し込み印刷をしましょう。
データは2行目以降で、1行目は差し込み用のフィールド名を記述します。

Word2007(ワード2007)実用編:はがき印刷(宛名印刷)
http://www.eurus.dti.ne.jp/~yoneyama/Word2007/word2007-hagaki.html

以下は、Word2003以前の場合です。

Word(ワード)講座 応用編:宛名書きの作成方法・・・
http://www.eurus.dti.ne.jp/~yoneyama/Word/ouyou/w-sasiko.html
宛名印刷はWordにおまかせ!
http://kokoro.kir.jp/word/hagakiatena.html
年賀状・暑中見舞い
http://sharp-pcstudio.com/disp.asp?cno=2&tbno=0&dno=23
 

Qアクセス検索フォーム【大項目→中項目→小項目と絞り込みながら検索】する方法を教えてください。

アクセス初心者です。
このサイトや手持ちのテキスト等でしばらく調べてがんばってみましたが、いろいろ試した不要なデータであふれかえってしまい拉致があかず、私が初心者であることからアクセス構築の考え方そのものにも不安があり、不勉強でお恥ずかしいのですがご質問させていただくことにしました。
お詳しい方ご教授願います。

やりたいことは、在庫管理のようなことで該当する在庫がいまどこにおいてあるのかを検索フォームを使って検索できるようにしたいのです。

在庫は大項目、中項目、小項目と分類しております。

検索フォームでコンボボックスなどを3つ配置し、大項目を一つ目のコンボボックスなどから選ぶと、次の二つ目のコンボボックスからは選んだ大項目から該当する中項目のリストが自動で選べ、中項目を選ぶと三つ目のコンボボックスからは選んだ中項目に該当する小項目のリストが自動で選べるような形にしたいと思っています。

大項目表テーブル
1 大項目1
2 大項目2
3 大項目3
というものを作って、

大項目1の中項目表テーブル
11 中項目A
12 中項目B
13 中項目C   このような中項目表テーブルは大項目1~3で3つ。
さらに、

中項目Aの小項目表テーブル
21 小項目あ
22 小項目い
23 小項目う   このような小項目表テーブルは中項目A~Cで9つ。

一応上記のような表は用意しました。


何年か前にマイクロソフトのMOS試験のアクセス2000には合格しましたが、それ以来アクセスをあまり触っておらず、いよいよ必要に背回れて困ってしまいました。不勉強で申し訳ありませんがよろしくお願いします。

アクセス初心者です。
このサイトや手持ちのテキスト等でしばらく調べてがんばってみましたが、いろいろ試した不要なデータであふれかえってしまい拉致があかず、私が初心者であることからアクセス構築の考え方そのものにも不安があり、不勉強でお恥ずかしいのですがご質問させていただくことにしました。
お詳しい方ご教授願います。

やりたいことは、在庫管理のようなことで該当する在庫がいまどこにおいてあるのかを検索フォームを使って検索できるようにしたいのです。

在庫は大項目、中項目、小項目...続きを読む

Aベストアンサー

この辺を参考に。
■コンボボックス作成の応用講座-1:SampleFile192
http://www.accessclub.jp/samplefile/samplefile_192.htm
■コンボボックス作成の応用講座-2:SampleFile193
http://www.accessclub.jp/samplefile/samplefile_193.htm

Qエクセル住所録を使用するはがき宛名印刷について教えてください。

エクセル住所録を使用してはがき宛名印刷をしたいのですが、うまくいかない点があるので教えてください。

はがき印刷ウィザードで、「他の住所録ファイルを差し込む」を選択し、エクセルの住所録を差し込むことはできたのですが、
郵便番号のセルがずれてしまうものがいくつかでてきてしまいます。
つまり、
ほとんどの宛名は
□□□-□□□□ のセルにきちんと入り、
123-1234 となるのですが、
いくつかの宛名だけ、
□□□-□□□□ のセルからずれてしまい、下4けたの最初の数字が隠れてしまって、
123-234 と表示されてしまいます。

エクセル住所録の書式は統一しているのに、なぜ特定の宛名の郵便番号だけずれてしまうのかわかりません。
セルの位置をなおすと、きちんと入っている分までずれてしまうので困っています。

どなたかアドバイスをよろしくお願いいたします。

Aベストアンサー

参考までに・・・

以前、私のところでもワードの差込印刷を利用していましたが、何かと不具合(?)が多く、今は宛名の鉄人という市販ソフトを使っています。
差し込み印刷に比べると、作業効率がぐーんとアップしますし、ご指摘のようなわけのわからない動作不良もありません。

http://www.vector.co.jp/soft/win95/writing/se417792.html

QAccess、同じテーブルの2つの項目対他のテーブルで1つの項目のリレーションは可能?

Accessで販売管理をしています。
以下のテーブルを作成し(*は主キーです)、

[売上T]  [商品M]  [顧客M]  [受注T]
*売上NO  *商品ID  *顧客ID1  *受注NO
商品ID   商品名    *顧客ID2  商品ID
日付    顧客ID1     顧客名    受注日
金額    顧客ID2            受注金額
       受注先1
       受注先2

参照整合性にチェックを入れリレーションでつないでいます。
リレーションシップは下記のとおりです。

[売上T]商品ID―[商品M]商品ID―[受注T]商品ID
[商品M]顧客ID1及び2―[顧客M]顧客ID1及び2―[商品M]受注先1及び2

ここで顧客と受注先が重複することもあるので、顧客Mから顧客ID及び受注先IDの2つのテーブルにリレーションシップを設定しているのですが、
クエリで  [受注T]受注NO及び受注金額、[顧客M]顧客名で抽出したところ、
5000件以上[受注T]にデータがあるはずのものが、1200件ほどしか抽出できませんでした。

ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し、
[商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2
とリレーションを作成し、クエリで抽出するとうまくいきました。
しかしこの方法だと、[顧客M]と[受注用顧客M]という2つのテーブルを管理しなければならなくなるので面倒です。


そこで質問です。
同じテーブルの2つの項目対他のテーブルの1つの項目とでは、うまくリレーションが設定できないのでしょうか。

もし出来ない場合、[顧客M]と[受注用顧客M]の2つのテーブルを管理しなければならない訳ですが、
なんとか簡単に管理できる方法(ひとつのテーブルを変更すると簡単にもうひとつが変更できる設定)はないでしょうか。

非常にわかりにくく長い文章で申し訳ありません。
VBA等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

Accessで販売管理をしています。
以下のテーブルを作成し(*は主キーです)、

[売上T]  [商品M]  [顧客M]  [受注T]
*売上NO  *商品ID  *顧客ID1  *受注NO
商品ID   商品名    *顧客ID2  商品ID
日付    顧客ID1     顧客名    受注日
金額    顧客ID2            受注金額
       受注先1
       受注先2

参照整合性にチェックを入れリレーションでつないでいます。
リレーションシップは下記のとおりです。

[売上T]商品ID―[商品M]商品ID―[...続きを読む

Aベストアンサー

リレーションシップとクエリでの結合を混同していますね

>ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し
>[商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2
>とリレーションを作成し、クエリで抽出するとうまくいきました。
クエリでこのように結合すればいいだけですから、[受注用顧客M]など作らず
クエリデザインビューに顧客Mを2度ドロップすればいいのです

QExcelで住所録を作り、ワードのはがき宛名印刷ウィザードで印刷したいが、データを呼び出せない。

Win98,Word2000,Excel2000を使用しています。エクセルで住所録を作り、フロッピーに保存しました。それを元に、ワードのはがき宛名印刷ウィザードで印刷しようとしましたが、「差込印刷機能を使用して宛名を処理しますか?」の画面で既存の住所データファイルを差し込むを選択しますが、フロッピーに保存したデータを呼び出すことはできません。マイドキュメント等に保存しないとだめなのでしょうか?フロッピーに保存したいのですが・・・

Aベストアンサー

当方WinNT Word98の環境ですが、フロッピーからでも
呼び出せますよ?
どう呼び出せないのか、もう少し詳しく補足していただけると
いいのですが。
ダイアログの画面で、ファイルの場所を指定するところに
フロッピードライブが指定できないのか、
フロッピードライブは指定できるが、目的のファイルが読み込めないのか。
ちなみに、デフォルトだとファイルの種類が「ワード文書(.doc)」になっているので、
それを変更しないと、エクセルファイルは見えません。

ただ、個人的な見解ですが、フロッピーに入っているデータを
そのまま参照するのは危険な気がします。
フロッピーのデータはわりにあっさり壊れるので。
作業するときだけ、ハードディスクにコピーして使う方が
安全だと思うのですが。

Qアクセス フォーム テーブルを引用し、フォームを作成しました。 投入した結果がテーブルに上書きされま

アクセス フォーム

テーブルを引用し、フォームを作成しました。
投入した結果がテーブルに上書きされません。
設定方法を教えて下さい。
また、投入時は1か0を選択するプルダウンを作りたいのですが、どのように作るのでしょうか?

Aベストアンサー

テーブルの引用とのことですが、それはレコードソースに設定してあるということですか?
各テキストボックス等のコントロールソースも設定してありますか?
プロパティで確認してください。

レコードソース、コントロールソースが分からない場合は、ウィザードを使ってフォームを作りましょう。

QEXPRESSの住所録からはがき宛名印刷ができない

WORD→ツール→はがき印刷ウィザード→差込印刷機能:使用しない→完了
宛名入力→アドレス帳(EXPRESSのアドレス帳が表示される)→アドレス帳の名前をクリック→OK
とすると アドレス帳の会社住所が印刷されてします。
自宅住所を印刷する方法はありますか?
差込印刷機能の差込印刷にチェックをいれると WORD EXCEL ACCESSの選択しかなくEXPRESSはありません。

Aベストアンサー

>EXPRESSの住所録からIMPORTできるものがあれば助かりますが

[EXPRESS]という単語がいっぱいでてきますが、
メールソフトの「OutlookExpress(OE)」のことと理解してよろしいでしょうか?

「OEのアドレス帳を直接読み書きできる」ということにこだわりすぎると、
対応するソフトがかなり限られてくると思います。

OEのアドレス帳は、CSV形式のテキストファイルにエクスポートできるはずです。
CSV形式を経由する形ではダメなのでしょうか。

フリーのソフトや市販の年賀状ソフトも、
CSV形式なら対応するものが多いはずです。

QACCESSのフォーム上で複数検索したい項目がある場合どうすればいいですか?

(1)部品ID
(2)日付
(3)入庫か出庫 
以上3つを検索したいのですがどうすればいいでしょうか?

(1)の部品IDはリストBOXの一覧から選択し、選択したものをテキストBOXに表示させるという形で作成しました。
(2)の日付はテキストBOXに手入力という形です。
(3)の入庫か出庫はコンボBOXで選択するという形です。

検索ボタンを作成してクエリの更新をかけて表示したいと思うのですが、3つの条件のうちその時により、全ての検索条件を入力しなくても1つでも条件を入力するとその条件が表示させるようにさせたいのです。

あと、何も条件を入力せず、検索ボタンを押すと全てのデータが表示させれるようにもしたいのです。

どのようなコードを記述すればいいでしょうか?
よろしくおねがいします

Aベストアンサー

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(Text2) Then
MyCriteria = MyCriteria & True
ElseIf Not IsNull(Text2) Then
MyCriteria = MyCriteria & "#" & Me!Text2 & "#"
Else
End If

strfilter = MyCriteria
strfilter = strfilter & " And 部品ID Like '*" & Me.Text1.Value & "*' And 区分 Like '*" & Me.Cmb1.Value & "*'"

Forms!フォーム名!サブフォーム名.Form.Filter = strfilter
Forms!フォーム名!サブフォーム名.Form.FilterOn = True
Forms!フォーム名!サブフォーム名.Requery

End Sub

メインフォーム上のテキストボックスやコンボの値をサブフォームのフィルターに代入するときはMe!Text1の指定で良さそうなので上記でサブフォームにフィルターをかけられます。(試したらフィルターかけられました。)
これでどうでしょう。

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(T...続きを読む

Q宛名職人とはがきキットの住所録がみつかりません。

宛名職人2015 Premium ダウンロード版
と日本郵便のはがきデザインキット2015で作成した住所録が
ハードディスクの中で行方がわからなくなっています。
見つける方法はありませんか?
いろいろ名前を変えて捜しますが出てきません。
はがきキットのほうは裏面は出てくるのですが
住所録がでてきません。
よろしくお願いします。

Aベストアンサー

1:パソコン左したのスタートボタンを押し、すべてのプログラムを押すと
インストールされているソフトが並んでいます。
もしかしたら一覧にフォルダになっているものがあれば、そのフォルダ内にあるかもしれない。

ここでないということは、ソフトを消しています。

2:他に確認する方法、もう一度インストールすれば、存在するなら「修復ですか?」など効いてくるかもしれない。聞いてこないこともあるのですが、そのままインストールすれば、前回バックアップしてあれば住所録を開けると思います。


3:他に確認する方法は、
スタート→コントロールパネル→プログラム→プログラムと機能(WIN7)
を開くと現在インストールされているソフトがずらっと並んでいるので、その中に宛名職人がなければインストールされていません。
ある場合は、1 のやり方で呼び出すことが出来ます。

Qアクセス:フォーム入力:【大項目→中項目への絞りこみ入力】方法を教えてください。

アクセス初心者です。よろしくお願いします。
【やりたいこと:次のような大項目→中項目への絞りこみ入力】
フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。

◆まず、テーブルで「大項目コード」表があります。
  1  A
  2  B
  3  …
◆別のテーブルで、
「Aの小項目」表
 11  ○ 
 12  × 
 13  △  
 
「Bの小項目」表
 21  ●
 23  ■
 24  ▲
というようなものがあります。

そこで、フォームで「大項目」フィールドに「1」(=A)を入力すると「小項目」フィールドに自動でコンボボックスのようなもので「○、×、△」がリストが出てコード番号(11,12,13)が入力できる、同様に「大項目」に「2」(=B)と入力するとリスト「●、■、▲」で選んで入力したいのです。

私が初心者であることから、上記のようなアクセス構築の考え方そのものも邪道なものかどうか、不安があります。
要は、【大項目→中項目への絞りこみ入力】ができればいいのです。できますなら、できるだけシンプルな方法を教えてくだされば幸いです。
よろしくお願いいたします。

アクセス初心者です。よろしくお願いします。
【やりたいこと:次のような大項目→中項目への絞りこみ入力】
フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。

◆まず、テーブルで「大項目コード」表があります。
  1  A
  2  B
  3  …
◆別のテーブルで、
「Aの小項目」表
 11  ○ 
 12  × 
 13  △  
 
「Bの小項目」表
 21  ●
 23  ■
 24  ▲
というようなものがあります。

そこで、...続きを読む

Aベストアンサー

コンボボックスのプロパティは大体このままで大丈夫であると思います。

me.コンボ2.requeryについては

2番目のコンボボックスのプロパティのイベントのタブの変更時のところに何か今入っていたらそれを選んで消してください。 そのあとフォーカスを変更時に充てると、▼と・・・という四角が出てきますので、・・・のほうを選択して「コードビルダ」を選んでください。
そうすると
Private Sub コンボ1_Change()

End Sub

と出てきますので、その間に
Private Sub コンボ1_Change()
me.コンボ2.requery
End Sub

と書いて画面を閉じていただければ大丈夫です。

最初のコンボボックスの名前= コンボ1
2番目のコンボボックスの名前= コンボ2

それで試してみてください。 
説明が下手で申し訳ありません。


人気Q&Aランキング

おすすめ情報