Access VBA質問箱 IV

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

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


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

【10547】データ抽出方法について まつ 08/9/19(金) 16:55 質問[未読]
【10563】Re:データ抽出方法について hatena 08/9/21(日) 1:09 回答[未読]
【10565】Re:データ抽出方法について まつ 08/9/21(日) 8:48 質問[未読]
【10566】Re:データ抽出方法について hatena 08/9/22(月) 14:43 回答[未読]
【10569】Re:データ抽出方法について まつ 08/9/24(水) 17:17 発言[未読]
【10571】Re:データ抽出方法について hatena 08/9/25(木) 0:57 回答[未読]
【10574】Re:データ抽出方法について まつ 08/9/25(木) 10:42 発言[未読]
【10575】Re:データ抽出方法について hatena 08/9/25(木) 12:02 回答[未読]
【10576】Re:データ抽出方法について hatena 08/9/25(木) 12:08 回答[未読]
【10578】Re:データ抽出方法について まつ 08/9/25(木) 12:38 お礼[未読]
【10579】Re:データ抽出方法について hatena 08/9/25(木) 12:44 回答[未読]

【10547】データ抽出方法について
質問  まつ  - 08/9/19(金) 16:55 -

引用なし
パスワード
   データの抽出方法で困ってる事があるので質問させてください。

[Table1]の中の[フィールドA]を"a" Or "b" Or "c" Or "d" Or "e"
でWhere条件で抽出した[クエリA]を作成して、[フォームA]で表示させています。

その[フォームA]の中でコンボボックス[コンボA]を作成してその[コンボA]の値集合ソース
は[クエリA]の[フィールドB]としています。[フォームA]を開いた時点で[コンボA]の値は"Null"にしてます。

[クエリA]の中の[フィールドB]の抽出条件に"Like "*" & [Forms]![フォームA]![コンボA] & "*"
としていますが、[フィールドB]の中には、値の無いデータが含まれており、現状では
その値の無いデータが表示されません。

値の無いデータを表示させるために抽出条件に
Is Null Or Like "*" [Forms]![フォームA]![コンボB] & "*"
と入力したら確かに値の無いデータも表示されるのですが
今度は[コンボA]で選択した抽出条件を出すときに、データが無い値も
出されてしまいます。

更に変更して
IIf([Forms]![フォームA]![コンボA]=Null,Is Null Or Like "*" [Forms]![フォームA]![コンボB] & "*",[Forms]![フォームA]![コンボA])
としたら、今度はデータが表示されません。

何かいい方法は無いでしょうか?

【10563】Re:データ抽出方法について
回答  hatena  - 08/9/21(日) 1:09 -

引用なし
パスワード
   Like "*" & [Forms]![フォームA]![コンボB] & "*" OR [Forms]![フォームA]![コンボB] Is Null

でどうですか。

【10565】Re:データ抽出方法について
質問  まつ  - 08/9/21(日) 8:48 -

引用なし
パスワード
   ▼hatena さん:
>Like "*" & [Forms]![フォームA]![コンボB] & "*" OR [Forms]![フォームA]![コンボB] Is Null
>
>でどうですか。

ありがとうございます、うまくいきました。
そこで、もうひとつ質問なのですが、[コンボB]で条件を絞り込む項目を選んだら
結果が表示されません・・・コンボBのプルダウンで選択する項目は、表示されてる
データの項目を参照しにいってるはずなのに、反映されないんです。
抽出条件からLikeを取ってしまうと、表示さるので入力される文字に問題は
無いと思うのですが・・・

【10566】Re:データ抽出方法について
回答  hatena  - 08/9/22(月) 14:43 -

引用なし
パスワード
   >そこで、もうひとつ質問なのですが、[コンボB]で条件を絞り込む項目を選んだら
>結果が表示されません・・・コンボBのプルダウンで選択する項目は、表示されてる
>データの項目を参照しにいってるはずなのに、反映されないんです。
>抽出条件からLikeを取ってしまうと、表示さるので入力される文字に問題は
>無いと思うのですが・・・

状況がよくつかめません。
下記の情報をご提供ください。

フォームのレコードソースのクエリのSQL文

コンボBの値集合ソースのクエリのSQL文
コンボB の コントロールソース、連結列、列数、列幅 の設定。

コンボB のイベントに設定しているマクロ又はイベントプロシージャ

【10569】Re:データ抽出方法について
発言  まつ  - 08/9/24(水) 17:17 -

引用なし
パスワード
   >フォームのレコードソースのクエリのSQL文

SELECT T_停止記録.製造年月日, T_停止記録.停止年月日, T_停止記録.生産品目, T_停止記録.停止範囲, T_停止記録.[No], T_停止記録.停止時刻, T_停止記録.停止時間, T_停止記録.停止機械, T_停止記録.管理外, T_停止記録.休止ロス2, T_停止記録.停止内容, T_停止記録.停止内容1, T_停止記録.停止内容2, T_停止記録.停止内容3, T_停止記録.停止内容4, T_停止記録.停止内容5, T_停止記録.停止内容6, T_停止記録.メモ・詳細, T_停止記録.品質, T_停止記録.故障
FROM T_停止記録
WHERE (((T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程1] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程2] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程3] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程4] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程5] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程6] Or (T_停止記録.停止範囲)=[Forms]![メインメニュー]![工程7]))
GROUP BY T_停止記録.製造年月日, T_停止記録.停止年月日, T_停止記録.生産品目, T_停止記録.停止範囲, T_停止記録.[No], T_停止記録.停止時刻, T_停止記録.停止時間, T_停止記録.停止機械, T_停止記録.管理外, T_停止記録.休止ロス2, T_停止記録.停止内容, T_停止記録.停止内容1, T_停止記録.停止内容2, T_停止記録.停止内容3, T_停止記録.停止内容4, T_停止記録.停止内容5, T_停止記録.停止内容6, T_停止記録.メモ・詳細, T_停止記録.品質, T_停止記録.故障
HAVING (((T_停止記録.製造年月日) Like "*" & [Forms]![停止一覧]![テキスト50] & "*") AND ((T_停止記録.生産品目) Like "*" & [Forms]![停止一覧]![生産品目検索] & "*") AND ((T_停止記録.停止範囲) Like "*" & [Forms]![停止一覧]![範囲検索] & "*") AND ((T_停止記録.停止時間)>=[Forms]![停止一覧]![時間検索]) AND ((T_停止記録.停止機械) Like "*" & [Forms]![停止一覧]![停止設備検索] & "*") AND ((T_停止記録.管理外) Like [Forms]![停止一覧]![管理外検索]) AND ((T_停止記録.休止ロス2) Like [Forms]![停止一覧]![管理外検索])) OR (((T_停止記録.製造年月日) Like "*" & [Forms]![停止一覧]![テキスト50] & "*") AND ((T_停止記録.生産品目) Like "*" & [Forms]![停止一覧]![生産品目検索] & "*") AND ((T_停止記録.停止範囲) Like "*" & [Forms]![停止一覧]![範囲検索] & "*") AND ((T_停止記録.停止時間)>=[Forms]![停止一覧]![時間検索]) AND ((T_停止記録.管理外) Like [Forms]![停止一覧]![管理外検索]) AND ((T_停止記録.休止ロス2) Like [Forms]![停止一覧]![管理外検索]) AND (([Forms]![停止一覧]![停止設備検索]) Is Null))
ORDER BY T_停止記録.製造年月日, T_停止記録.[No];

>コンボBの値集合ソースのクエリのSQL文

SELECT [停止一覧表示 クエリ].停止機械
FROM [停止一覧表示 クエリ]
GROUP BY [停止一覧表示 クエリ].停止機械;

>コンボB の コントロールソース、連結列、列数、列幅 の設定。

コントロールソース(非連結)、連結列(1)、列数(1)、列幅(Null)

>コンボB のイベントに設定しているマクロ又はイベントプロシージャ

「更新時」にマクロ設定で「最クエリ」を実行してます。

非常に長くなってすみません・・・

【10571】Re:データ抽出方法について
回答  hatena  - 08/9/25(木) 0:57 -

引用なし
パスワード
   見やすくするために整形してみました。

SELECT
T_停止記録.製造年月日,
T_停止記録.停止年月日,
T_停止記録.生産品目,
T_停止記録.停止範囲,
T_停止記録.[No],
T_停止記録.停止時刻,
T_停止記録.停止時間,
T_停止記録.停止機械,
T_停止記録.管理外,
T_停止記録.休止ロス2,
T_停止記録.停止内容,
T_停止記録.停止内容1,
T_停止記録.停止内容2,
T_停止記録.停止内容3,
T_停止記録.停止内容4,
T_停止記録.停止内容5,
T_停止記録.停止内容6,
T_停止記録.メモ・詳細,
T_停止記録.品質,
T_停止記録.故障
FROM T_停止記録
WHERE
 ( T_停止記録.停止範囲=[Forms]![メインメニュー]![工程1]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程2]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程3]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程4]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程5]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程6]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程7])
GROUP BY T_停止記録.製造年月日,
T_停止記録.停止年月日,
T_停止記録.生産品目,
T_停止記録.停止範囲,
T_停止記録.[No],
T_停止記録.停止時刻,
T_停止記録.停止時間,
T_停止記録.停止機械,
T_停止記録.管理外,
T_停止記録.休止ロス2,
T_停止記録.停止内容,
T_停止記録.停止内容1,
T_停止記録.停止内容2,
T_停止記録.停止内容3,
T_停止記録.停止内容4,
T_停止記録.停止内容5,
T_停止記録.停止内容6,
T_停止記録.メモ・詳細,
T_停止記録.品質,
T_停止記録.故障
HAVING
 ( T_停止記録.製造年月日 Like "*" & [Forms]![停止一覧]![テキスト50] & "*"
AND T_停止記録.生産品目 Like "*" & [Forms]![停止一覧]![生産品目検索] & "*"
AND T_停止記録.停止範囲 Like "*" & [Forms]![停止一覧]![範囲検索] & "*"
AND T_停止記録.停止時間>=[Forms]![停止一覧]![時間検索]
AND T_停止記録.停止機械 Like "*" & [Forms]![停止一覧]![停止設備検索] & "*"
AND T_停止記録.管理外 Like [Forms]![停止一覧]![管理外検索]
AND T_停止記録.休止ロス2 Like [Forms]![停止一覧]![管理外検索])
OR
 ( T_停止記録.製造年月日 Like "*" & [Forms]![停止一覧]![テキスト50] & "*"
AND T_停止記録.生産品目 Like "*" & [Forms]![停止一覧]![生産品目検索] & "*"
AND T_停止記録.停止範囲 Like "*" & [Forms]![停止一覧]![範囲検索] & "*"
AND T_停止記録.停止時間>=[Forms]![停止一覧]![時間検索]
AND T_停止記録.管理外 Like [Forms]![停止一覧]![管理外検索]
AND T_停止記録.休止ロス2 Like [Forms]![停止一覧]![管理外検索]
AND T_停止記録.停止機械 Like "*" & [Forms]![停止一覧]![停止設備検索] & "*"
AND [Forms]![停止一覧]![停止設備検索] Is Null)
ORDER BY
T_停止記録.製造年月日,
T_停止記録.[No];

集計クエリにしているようですが、集計はどこでもしてないので、
集計クエリにする必用はないと思います。

下記のようなSQLでどうでしょうか。
SQLビューで入力して、そのまま保存して閉じてください。
デザインビューで表示すると、書き換えられておかしくなる場合が
あります。

SELECT
T_停止記録.製造年月日,
T_停止記録.停止年月日,
T_停止記録.生産品目,
T_停止記録.停止範囲,
T_停止記録.[No],
T_停止記録.停止時刻,
T_停止記録.停止時間,
T_停止記録.停止機械,
T_停止記録.管理外,
T_停止記録.休止ロス2,
T_停止記録.停止内容,
T_停止記録.停止内容1,
T_停止記録.停止内容2,
T_停止記録.停止内容3,
T_停止記録.停止内容4,
T_停止記録.停止内容5,
T_停止記録.停止内容6,
T_停止記録.メモ・詳細,
T_停止記録.品質,
T_停止記録.故障
FROM T_停止記録
WHERE
 ( T_停止記録.停止範囲=[Forms]![メインメニュー]![工程1]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程2]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程3]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程4]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程5]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程6]
Or T_停止記録.停止範囲=[Forms]![メインメニュー]![工程7] )
AND T_停止記録.製造年月日 Like "*" & [Forms]![停止一覧]![テキスト50] & "*"
AND T_停止記録.生産品目 Like "*" & [Forms]![停止一覧]![生産品目検索] & "*"
AND T_停止記録.停止範囲 Like "*" & [Forms]![停止一覧]![範囲検索] & "*"
AND T_停止記録.停止時間>=[Forms]![停止一覧]![時間検索]
AND T_停止記録.管理外 Like [Forms]![停止一覧]![管理外検索]
AND T_停止記録.休止ロス2 Like [Forms]![停止一覧]![管理外検索]
AND ( T_停止記録.停止機械 Like "*" & [Forms]![停止一覧]![停止設備検索] & "*"
  OR [Forms]![停止一覧]![停止設備検索] Is Null )
ORDER BY
T_停止記録.製造年月日,
T_停止記録.[No];

【10574】Re:データ抽出方法について
発言  まつ  - 08/9/25(木) 10:42 -

引用なし
パスワード
   ありがとうございました。
無事表示されるようになりました!

しかし、一点おかしな部分がありまして
コンボBで選択した項目で表示されない箇所があります・・・・
”○○○○[○○○]”というデータを選んだときだけ表示されないんです。

これはひょっとして、入力データには”[]”を使ってはダメという事でしょうか?

【10575】Re:データ抽出方法について
回答  hatena  - 08/9/25(木) 12:02 -

引用なし
パスワード
   >しかし、一点おかしな部分がありまして
>コンボBで選択した項目で表示されない箇所があります・・・・
>”○○○○[○○○]”というデータを選んだときだけ表示されないんです。
>
>これはひょっとして、入力データには”[]”を使ってはダメという事でしょうか?

Like演算子のヘルプを見れば説明がありますが、[] には特別な意味があります。

○○○○[○○○]

というデータを抽出したいのなら、

Like "○○○○[[]○○○]"

というように[を[]で囲みます。

【10576】Re:データ抽出方法について
回答  hatena  - 08/9/25(木) 12:08 -

引用なし
パスワード
   ちなみに、コンボボックスから選択するなら、Like演算子で曖昧検索をする必用がないように思いますが。
完全一致でいいのなら、= を使えばいいかと思います。

・・・・・
AND ( T_停止記録.停止機械 = [Forms]![停止一覧]![停止設備検索]
   OR [Forms]![停止一覧]![停止設備検索] Is Null )

【10578】Re:データ抽出方法について
お礼  まつ  - 08/9/25(木) 12:38 -

引用なし
パスワード
   ▼hatena さん:
>ちなみに、コンボボックスから選択するなら、Like演算子で曖昧検索をする必用がないように思いますが。
>完全一致でいいのなら、= を使えばいいかと思います。
>
>・・・・・
>AND ( T_停止記録.停止機械 = [Forms]![停止一覧]![停止設備検索]
>   OR [Forms]![停止一覧]![停止設備検索] Is Null )

完全一致でいいかなと思い、書き換えてためしてみたのですが。
完全一致に変えてもやはり[]を選択したら、表示はしませんでした。

なので、データ入力には、[]を使用しないようにする事とします。
長々とありがとうございました。

【10579】Re:データ抽出方法について
回答  hatena  - 08/9/25(木) 12:44 -

引用なし
パスワード
   >完全一致でいいかなと思い、書き換えてためしてみたのですが。
>完全一致に変えてもやはり[]を選択したら、表示はしませんでした。

そんなはずはないです。
どこかにSQLの記述間違いがあるのでしょう。

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