<テーブル>
ID 取引先 状態 担当 担当2 担当3 担当4
1_A商事_継続_鈴木_山田
2_B商事_継続_山田
3_C商事_終了_田中_鈴木_山田_佐藤
というテーブルがあります。
コマンドボタン一つで担当者別にそれぞれの継続中のデータの一覧表を連続してレポートに印刷するマクロを作成することは可能でしょうか。
考えついた方法は,
(1)担当者別に人数分の抽出クエリを作成し,そのクエリをレポートソースとした担当者別のレポートを作成する
(2)そのレポートを順次印刷していくマクロを作成する
ですが,担当者が20人ほどいるので,20個のクエリを作成し,20個のレポートを作成しなければなりません。
また,担当,担当2,担当3全てに名前がある山田さんのような場合には,1~3全ての担当者として抽出したいと思います。
さらに,印刷するレポートのヘッダーに担当者の名前を表示させたいのですが,可能でしょうか。
初めは,パラメータークエリを利用してダイアログボックスに入力する値(担当者名)をレポートに取り込む方法を考えたのですが,毎月決まって打ち出したいレポートが5種類あるので,20人の担当者の分を出力する場合,5種類×20回=100回,パラメータークエリでの入力をすることになるので,あきらめました。
なんだか,欲張りな話ですが,良い方法があればご教示下さい。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
なんかアクセスが出来るのか、クエリを勉強したいのかわからないが、そういう方法もあるが、難しい方法に首を突っ込んで、勉強の方向がそれているように思う。
下記がお勧め。
(1)データシートまたはそのコピーを作り、担当者でソートする。
(2)担当者が変わるまで、印刷シートに明細行部分に印刷項目データを、データシートから採ってきて代入する。
(3)所定行数を超えたら、印刷シートは印刷して、明細部や小計などはクリア、明細行のセットを明細最初行から続ける。
(4)ページ途中で担当者が変わったら、出来上がっている印刷シートは印刷して、明細部や小計などはクリア
その後、変わった担当者の明細で上記を繰り返す。
(5)データが終ったら出来上がっている印刷シートは印刷する。
こういうロジックは、昔は先輩から鍛えられたが、最近に独学した人は知らないようだ。
No.5
- 回答日時:
unionクエリを使う。
クエリ1:SELECT テーブル1.ID, テーブル1.担当 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当) Is Not Null))
クエリ2:SELECT テーブル1.ID, テーブル1.担当2 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当2) Is Not Null))
クエリ3:SELECT テーブル1.ID, テーブル1.担当3 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当3) Is Not Null))
クエリ4:SELECT テーブル1.ID, テーブル1.担当4 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当4) Is Not Null))
クエリ5:SELECT クエリ1.* FROM クエリ1 UNION ALL SELECT クエリ2.* FROM クエリ2 UNION ALL SELECT クエリ3.* FROM クエリ3 UNION ALL SELECT クエリ4.* FROM クエリ4
このクエリ5が担当のどれかに名前があるIDのリストになる。
これを基に新たなクエリを作る。
クエリ6:SELECT クエリ5.担当者, クエリ5.ID FROM クエリ5 ORDER BY クエリ5.担当者, クエリ5.ID
とすると、担当者別のIDが求められる。
さらにこれを基にすれば、担当別一覧が作れる。
クエリ5を求めるのに、クエリ1からクエリ4を作らなくても、以下でもできる。
SELECT テーブル1.ID, テーブル1.担当 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当) Is Not Null))
UNION ALL SELECT テーブル1.ID, テーブル1.担当2 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当2) Is Not Null))
UNION ALL SELECT テーブル1.ID, テーブル1.担当3 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当3) Is Not Null))
UNION ALL SELECT テーブル1.ID, テーブル1.担当4 AS 担当者 FROM テーブル1 WHERE (((テーブル1.担当4) Is Not Null));
No.4
- 回答日時:
補足。
よく陥りやすいのですがこのような場合、顧客が3レコードしかないとMAX3レコードしか出力されないと勘違いしますがSQLの基本は掛け算です担当20名、顧客3件だと60レコードあると仮定されその中でWhere句条件に一致する物が出ます。
なので担当者を複数持つ顧客は先程のサンプルSQLで担当者の数だけ出力されますよ
質問の意図がよく見えなかったのですが多分欲しいのはサンプルのような事かな~と思ってね
No.2
- 回答日時:
質問の意図がよく見えませんねぇ?
担当者名テーブルは無いの?
無ければ作成したほうが良いでしょうね
それで現テーブルを顧客、担当者名テーブルを担当名と仮定して
先ほどと同じように
Select 担当名.担当, 顧客.ID, 顧客.取引先
From 顧客, 担当名
Where 担当名.担当 In (顧客.担当,顧客.担当2,顧客.担当3,顧客.担当4)
これをレポートで担当、IDでソート
担当ブレイクで改ページすれば良いのでは
この回答への補足
質問の仕方が適切でなく,お手間を取らせてすみません。アクセスに関しては,独学で学んでいるので,全くの素人だと想像して下さい(もう,してると思いますが…)。
やりたい事は,
「フォーム上にコマンドボタンを配置し,そのコマンドボタンをクリックすると,担当者別の継続中のデータの一覧表が印刷される」
ことです。そんなこと,無理だよ!ということであれば,そのように言って下されば,あきらめます。情報が足りないのであれば,足りないところを指摘していただけると助かります。
ご質問の件,担当者テーブルは,ありますが,仮に
<テーブル>
ID 取引先 状態 担当 担当2 担当3 担当4
1_A商事_継続_鈴木_山田
2_B商事_継続_山田
3_C商事_終了_田中_鈴木_山田_佐藤
のテーブルを〈テーブル1〉とします。
〈テーブル1〉の担当…担当4のフィールドには,〈担当者テーブル〉をデータ型のルックアップウィザードで表示される設定にしました(そもそも,この思考がおかしいのでしょうか?)。
記述していただいた
Select 担当名.担当, 顧客.ID, 顧客.取引先
From 顧客, 担当名
Where 担当名.担当 In (顧客.担当,顧客.担当2,顧客.担当3,顧客.担当4)
のどこをどうやって直して良いのか分かりません。お手数をおかけしますが,ご教示下さい。
No.1
- 回答日時:
tab1:
[ID]_[取引先]_[状態]
__1___A商事____1
__2___B商事____1
__3___C商事____0
tab2:
[tab1_ID]_[区分]_[担当]
_______1______1___鈴木
_______1______2___山田
_______2______1___山田
_______3______1___田中
_______3______2___鈴木
_______3______3___山田
_______3______4___佐藤
クエリ1:
[ID]_[取引先]_[状態]_[担当]
__1___A商事_______1___鈴木
__1___A商事_______1___山田
__2___B商事_______1___山田
__3___C商事_______0___田中
__3___C商事_______0___鈴木
__3___C商事_______0___山田
__3___C商事_______0___佐藤
SELECT tab1.ID, tab1.取引先, tab1.状態, tab2.担当
FROM tab1 INNER JOIN tab2 ON tab1.ID=tab2.tab1_ID
ORDER BY tab2.区分;
[イミディエイト]
? DBSelect("SELECT * FROM [クエリ1] WHERE tab1.状態=1 Order BY tab2.担当, tab1.ID",,vbCrLF)
1;A商事;1;山田;
2;B商事;1;山田;
1;A商事;1;鈴木;
で、担当者別にそれぞれの継続中のデータの一覧を[イミディエイトウインドウ]に表示しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelの担当者割当の表から担当者を抽出する方法 4 2022/07/16 14:05
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- 理学療法士・作業療法士・言語聴覚士 こんにちは。大学4年の作業療法士の医療学生です。 先日、小児施設の実習に行きました。 担当の子を1人 2 2022/07/09 08:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのクエリでSplit関数は...
-
アクセス:クエリの結合とリレ...
-
デザインビューにてテーブルが...
-
テンポラリファイルのための空...
-
accessでクエリの結果だけをリ...
-
Access「レコードが削除されま...
-
クロス集計クエリの結果を一時...
-
クエリのデータをテーブルに入...
-
アクセス 項目毎にデータを横...
-
Access 末尾に0を追加したい
-
ACCESSで行数指定(5万行目~8...
-
Accessで1レコードごとの合計
-
クロス集計クエリの結果をテー...
-
access テーブル作成クエリでテ...
-
アクセス:テーブルに数式を保...
-
Access DAOのExecuteメソッドの...
-
エクセル複数シートをアクセス...
-
Accessでテーブルやクエリのリ...
-
担当者別にレコードを抽出して...
-
教えてください! アクセスのac...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クロス集計クエリの結果をテー...
-
アクセス:クエリの結合とリレ...
-
Access「レコードが削除されま...
-
アクセスのクエリでSplit関数は...
-
クエリのデータをテーブルに入...
-
accessでクエリの結果だけをリ...
-
デザインビューにてテーブルが...
-
アクセス 項目毎にデータを横...
-
ACCESSで行数指定(5万行目~8...
-
access インポート時、既にある...
-
教えてください! アクセスのac...
-
更新不可能なクエリに対して更...
-
アクセス クロス集計クエリ→テ...
-
ACCESSでの重複レコードの削除
-
Accessのクロス集計→テーブル作...
-
access テーブル作成クエリでテ...
-
Access DAOのExecuteメソッドの...
-
Access2010「クエリが複雑すぎ...
-
Access 末尾に0を追加したい
-
エクセル複数シートをアクセス...
おすすめ情報