Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1926 / 2272 ツリー ←次へ | 前へ→

【4583】SQLで非表示 05/3/15(火) 11:11 質問[未読]
【4585】Re:SQLで非表示 umebaind 05/3/15(火) 12:33 回答[未読]
【4587】Re:SQLで非表示 05/3/15(火) 12:51 発言[未読]
【4588】Re:SQLで非表示 umebaind 05/3/15(火) 13:03 回答[未読]
【4609】Re:SQLで非表示 hatena 05/3/16(水) 2:17 回答[未読]
【4610】Re:SQLで非表示 05/3/16(水) 9:00 発言[未読]
【4613】Re:SQLで非表示 hatena 05/3/16(水) 9:57 回答[未読]
【4616】Re:SQLで非表示 05/3/16(水) 10:40 お礼[未読]

【4583】SQLで非表示
質問    - 05/3/15(火) 11:11 -

引用なし
パスワード
   非表示項目をSQL側で制御したいのですが、そのような事は可能でしょうか?
たとえば

AテーブルのB項目とC項目の内容が

B   C
----- -----
11111 22222
11111 33333

(B,C共にテキスト型で文字数は5文字とする。)

SQLを書くと → SELECT B,C FROM A;

これだと出力結果が

B   C
----- -----
11111 22222
11111 33333

となるのですが、これを

B   C
----- -----
11111 22222
    33333

としたいのです。

よろしくお願いします。

【4585】Re:SQLで非表示
回答  umebaind E-MAIL  - 05/3/15(火) 12:33 -

引用なし
パスワード
   始めましてumebaindです。
SELECT DISTINCT B,C FROM A;
じゃ駄目ですか?
他GROUP BYって手もありですが。

【4587】Re:SQLで非表示
発言    - 05/3/15(火) 12:51 -

引用なし
パスワード
   ▼umebaind さん:
>始めましてumebaindです。
>SELECT DISTINCT B,C FROM A;
>じゃ駄目ですか?
>他GROUP BYって手もありですが。
その方法だとレコードそのものがなくなってしまうんです。

指定フィールドだけ空欄にしたいんです。
なんとか、ならないものでしょうか?

【4588】Re:SQLで非表示
回答  umebaind E-MAIL  - 05/3/15(火) 13:03 -

引用なし
パスワード
   ▼T さん:
>▼umebaind さん:
>>始めましてumebaindです。
>>SELECT DISTINCT B,C FROM A;
>>じゃ駄目ですか?
>>他GROUP BYって手もありですが。
>その方法だとレコードそのものがなくなってしまうんです。
>
>指定フィールドだけ空欄にしたいんです。
>なんとか、ならないものでしょうか?

umebaind GROUP BY してみては
それ以外は私は解りません。

【4609】Re:SQLで非表示
回答  hatena  - 05/3/16(水) 2:17 -

引用なし
パスワード
   >これだと出力結果が
>
>B   C
>----- -----
>11111 22222
>11111 33333
>
>となるのですが、これを
>
>B   C
>----- -----
>11111 22222
>    33333
>
>としたいのです。

これって見た目の問題ですよね。
実際そのようなデータは、データとしては意味を持ちませんので。

見た目だけなら、レポートで出力するときに
重複データ非表示を「はい」にするだけです。

フォームなら条件付き書式を使えば、ちょっと面倒で
重い処理になりますができないことはないと思います。

最終目的はレポートではないですか。
それともフォーム上で編集もしたいですか。

SQLで無ければならない理由が思いつかないですが。

【4610】Re:SQLで非表示
発言    - 05/3/16(水) 9:00 -

引用なし
パスワード
   ▼hatena さん:
>>これだと出力結果が
>>
>>B   C
>>----- -----
>>11111 22222
>>11111 33333
>>
>>となるのですが、これを
>>
>>B   C
>>----- -----
>>11111 22222
>>    33333
>>
>>としたいのです。
>
>これって見た目の問題ですよね。
>実際そのようなデータは、データとしては意味を持ちませんので。
>
>見た目だけなら、レポートで出力するときに
>重複データ非表示を「はい」にするだけです。
>
>フォームなら条件付き書式を使えば、ちょっと面倒で
>重い処理になりますができないことはないと思います。
>
>最終目的はレポートではないですか。
>それともフォーム上で編集もしたいですか。
>
>SQLで無ければならない理由が思いつかないですが。

もちろんそうです。
Accessに付属のフォームやレポートで書式を変更すれば
そのようなことは可能です。
ですが、サードパーティのレポートにはそのような機能を
持たないものも見受けられますので、
あえてSQL側でできないものかと試行錯誤しているのです。

以上を踏まえての質問なのですが、未だに方法が見つからないです。

どうか、よろしくお願いします。

【4613】Re:SQLで非表示
回答  hatena  - 05/3/16(水) 9:57 -

引用なし
パスワード
   >もちろんそうです。
>Accessに付属のフォームやレポートで書式を変更すれば
>そのようなことは可能です。
>ですが、サードパーティのレポートにはそのような機能を
>持たないものも見受けられますので、
>あえてSQL側でできないものかと試行錯誤しているのです。

なるほど、そういうことでしたか。
サードパーティ製でそのような機能のないレポートもあるんですね。
ということはACCESSのレポート機能は以外と強力なんだ。


グループ内での並び順を決定するキーフィールドがあれば、
SQLでもできますね。
とりあえず、
グループ内で C フィールドに重複がなくそれの昇順という条件で
SQLを作ると、

SELECT
IIf(A.C=(SELECT Min(T1.C) FROM A AS T1 WHERE T1.B=A.B),A.B,Null) AS B,
A.C
FROM A
ORDER BY A.B, A.C;

C フィールドに重複があったり、並び順が違う場合は、
別に並び順を一意に決定するフィールドが別に必要になります。

【4616】Re:SQLで非表示
お礼    - 05/3/16(水) 10:40 -

引用なし
パスワード
   ▼hatena さん:
>>もちろんそうです。
>>Accessに付属のフォームやレポートで書式を変更すれば
>>そのようなことは可能です。
>>ですが、サードパーティのレポートにはそのような機能を
>>持たないものも見受けられますので、
>>あえてSQL側でできないものかと試行錯誤しているのです。
>
>なるほど、そういうことでしたか。
>サードパーティ製でそのような機能のないレポートもあるんですね。
>ということはACCESSのレポート機能は以外と強力なんだ。
>
>
>グループ内での並び順を決定するキーフィールドがあれば、
>SQLでもできますね。
>とりあえず、
>グループ内で C フィールドに重複がなくそれの昇順という条件で
>SQLを作ると、
>
>SELECT
> IIf(A.C=(SELECT Min(T1.C) FROM A AS T1 WHERE T1.B=A.B),A.B,Null) AS B,
> A.C
>FROM A
>ORDER BY A.B, A.C;
>
>C フィールドに重複があったり、並び順が違う場合は、
>別に並び順を一意に決定するフィールドが別に必要になります。

管理フィールドはやっぱり必要なんですね。
そもそもこれがないと非表示フィールドがわけわかんなくなるし・・・

問題は解決しました。
これでレポートが作りやすくなります。
ありがとうございました。

1926 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078265
(SS)C-BOARD v3.8 is Free