Access VBA質問箱 IV

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

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


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

【12893】オプショングループのオプションボタンで複数選択や全て表示させるには? naan 15/10/23(金) 14:51 質問[未読]
【12894】Re:オプショングループのオプションボタン... かるびの 15/10/24(土) 0:19 回答[未読]
【12895】Re:オプショングループのオプションボタン... naan 15/10/26(月) 15:09 質問[未読]
【12896】Re:オプショングループのオプションボタン... かるびの 15/10/26(月) 23:57 回答[未読]
【12898】Re:オプショングループのオプションボタン... naan 15/11/2(月) 0:47 お礼[未読]

【12893】オプショングループのオプションボタンで...
質問  naan  - 15/10/23(金) 14:51 -

引用なし
パスワード
   オプショングループのオプションボタンで
複数選択や全て表示させるには
どの様に変更すれば良いでしょうか?

現在はオプショングループ内にオプションボタンが
以下の様に設置されている

OK  オプション値1
NO  オプション値2
未定 オプション値3
その他オプション値4
全て オプション値5*←解らない点(1,2,3,4全て含めて検索したい)
2次未 オプション値6←解らない点(対応日2次が空白でオプション値1,2を含めて検索したい)

'現在以下の様に検索している
Private Sub 検索_Click()
Dim strTemp As String

strTemp = "Nz(項番, '') LIKE '*" & テキスト1 & "*'" & _
       " AND Nz(お客様名, '') LIKE '*" & テキスト2 & "*'" & _
       " AND Nz(住所, '') LIKE '*" & テキスト3 & "*'" & _
       " AND Nz(電話番号, '') LIKE '*" & テキスト4 & "*'" & _
       " AND Nz(郵便番号, '') LIKE '*" & テキスト5 & "*'" & _
       " AND Nz(対応者1次, '') LIKE '*" & テキスト6 & "*'" & _
       " AND Nz(対応日1次, '') LIKE '*" & テキスト7 & "*'" & _
       " AND Nz(対応者2次, '') LIKE '*" & テキスト8 & "*'" & _
       " AND Nz(対応日2次, '') LIKE '*" & テキスト9 & "*'" & _
       " AND Nz(進捗, '') LIKE '*" & オプション & "*'"

 Me!サブクエリのサブフォーム.Form.Filter = strTemp
 Me!サブクエリのサブフォーム.Form.FilterOn = True

End Sub

ご教授頂ければ幸いです

【12894】Re:オプショングループのオプションボタ...
回答  かるびの  - 15/10/24(土) 0:19 -

引用なし
パスワード
   >オプショングループのオプションボタンで
>複数選択や全て表示させるには
>どの様に変更すれば良いでしょうか?

 オプショングループ内のオプションボタンについて複数選択をすることはできません。
 それが仕様です。


 もしオプションボタンの複数選択をしたいなら、オプショングループは配置せず、
フォーム上にそのままオプションボタンを配置します。

 ただ、オプショングループを使わないと、オプショングループの機能、すなわち、例えば、
「opt1」という名前のオプションボタンが選択されているときに、
「opt3」という名前のオプションボタンを選択したら、
「opt1」の選択が解除される
という機能は使えなくなります。
 しかし、その機能はVBAを使って実装すればいいです。


 また、オプション値とは、オプショングループコントロールの値ですから、
オプショングループを使わなければ、オプション値を取得することはできなくなります。

 その代わり、If文あるいはSelect Case文を使って、
各オプションボタンの値に応じて、フィルタに設定する抽出条件文字列を生成する
ことになります。

【12895】Re:オプショングループのオプションボタ...
質問  naan  - 15/10/26(月) 15:09 -

引用なし
パスワード
   ▼かるびの さん:
>>オプショングループのオプションボタンで
>>複数選択や全て表示させるには
>>どの様に変更すれば良いでしょうか?
>
> オプショングループ内のオプションボタンについて複数選択をすることはできません。
> それが仕様です。
>
>
> もしオプションボタンの複数選択をしたいなら、オプショングループは配置せず、
>フォーム上にそのままオプションボタンを配置します。
>
> ただ、オプショングループを使わないと、オプショングループの機能、すなわち、例えば、
>「opt1」という名前のオプションボタンが選択されているときに、
>「opt3」という名前のオプションボタンを選択したら、
>「opt1」の選択が解除される
>という機能は使えなくなります。
> しかし、その機能はVBAを使って実装すればいいです。
>
>
> また、オプション値とは、オプショングループコントロールの値ですから、
>オプショングループを使わなければ、オプション値を取得することはできなくなります。
>
> その代わり、If文あるいはSelect Case文を使って、
>各オプションボタンの値に応じて、フィルタに設定する抽出条件文字列を生成する
>ことになります。

お返事ありがとうございます
だいぶググって以下を作成しましたがテキスト用の検索と
グループ用の検索をどの様に組み合わせたらいいのか解りません

Dim strTemp As String

strTemp = "Nz(項番, '') LIKE '*" & テキスト1 & "*'" & _
       " AND Nz(お客様名, '') LIKE '*" & テキスト2 & "*'" & _
       " AND Nz(住所, '') LIKE '*" & テキスト3 & "*'" & _
       " AND Nz(電話番号, '') LIKE '*" & テキスト4 & "*'" & _
       " AND Nz(郵便番号, '') LIKE '*" & テキスト5 & "*'" & _
       " AND Nz(対応者1次, '') LIKE '*" & テキスト6 & "*'" & _
       " AND Nz(対応日1次, '') LIKE '*" & テキスト7 & "*'" & _
       " AND Nz(対応者2次, '') LIKE '*" & テキスト8 & "*'" & _
       " AND Nz(対応日2次, '') LIKE '*" & テキスト9 & "*'"

 Me!サブクエリのサブフォーム.Form.Filter = strTemp
 Me!サブクエリのサブフォーム.Form.FilterOn = True

’今回作成した検索
  Select Case Me.グループ
   Case 1: Me.サブクエリのサブフォーム.Form.Filter = "進捗='OK'"
   Case 2: Me.サブクエリのサブフォーム.Form.Filter = "進捗='NO'"
   Case 3: Me.サブクエリのサブフォーム.Form.Filter = "進捗='未定'"
   Case 4: Me.サブクエリのサブフォーム.Form.Filter = "進捗='その他'"
   Case 5: Me.サブクエリのサブフォーム.Form.Filter = "項番 is not null" ←IDを全て表示
   Case 6: Me.サブクエリのサブフォーム.Form.Filter = "(進捗 ='OK' Or 進捗 = 'NG') AND 対応日2次 is null"
  End Select

ご教授いただければ幸いです

【12896】Re:オプショングループのオプションボタ...
回答  かるびの  - 15/10/26(月) 23:57 -

引用なし
パスワード
   >strTemp = "Nz(項番, '') LIKE '*" & テキスト1 & "*'" & _
>       " AND Nz(お客様名, '') LIKE '*" & テキスト2 & "*'" & _
>       " AND Nz(住所, '') LIKE '*" & テキスト3 & "*'" & _
>       " AND Nz(電話番号, '') LIKE '*" & テキスト4 & "*'" & _
>       " AND Nz(郵便番号, '') LIKE '*" & テキスト5 & "*'" & _
>       " AND Nz(対応者1次, '') LIKE '*" & テキスト6 & "*'" & _
>       " AND Nz(対応日1次, '') LIKE '*" & テキスト7 & "*'" & _
>       " AND Nz(対応者2次, '') LIKE '*" & テキスト8 & "*'" & _
>       " AND Nz(対応日2次, '') LIKE '*" & テキスト9 & "*'"
>
> Me!サブクエリのサブフォーム.Form.Filter = strTemp
> Me!サブクエリのサブフォーム.Form.FilterOn = True
>
>’今回作成した検索
>  Select Case Me.グループ
>   Case 1: Me.サブクエリのサブフォーム.Form.Filter = "進捗='OK'"
>   Case 2: Me.サブクエリのサブフォーム.Form.Filter = "進捗='NO'"
>   Case 3: Me.サブクエリのサブフォーム.Form.Filter = "進捗='未定'"
>   Case 4: Me.サブクエリのサブフォーム.Form.Filter = "進捗='その他'"
>   Case 5: Me.サブクエリのサブフォーム.Form.Filter = "項番 is not null" ←IDを全て表示
>   Case 6: Me.サブクエリのサブフォーム.Form.Filter = "(進捗 ='OK' Or 進捗 = 'NG') AND 対応日2次 is null"
>  End Select

 オプショングループにおいてオプション値が2であるオプションボタンが選択されている場合に
このコードを実行すれば、
「進捗='NO'」という抽出条件のみでフィルタがかかります。
 「テキスト1」から「テキスト9」までのテキストボックスによる抽出条件は、
フィルタに全く反映されません。

 その理由ですが、
「Me!サブクエリのサブフォーム.Form.Filter = strTemp」のコードにより、
(サブ)フォームのFilterプロパティには、テキストボックスによる抽出条件がセットされますが、
「Case 2: Me.サブクエリのサブフォーム.Form.Filter = "進捗='NO'"」が実行されることにより、
(サブ)フォームのFilterプロパティの値が「進捗='NO'」に書き替えられるからです。


>テキスト用の検索と
>グループ用の検索をどの様に組み合わせたらいいのか解りません

 テキストボックス・コントロールによる抽出条件と「グループ」コントロールによる抽出条件を
合体させた抽出条件の文字列を作り、それを(サブ)フォームのFilterプロパティへの代入します。

 具体的には、例えば、

>Case 3: Me.サブクエリのサブフォーム.Form.Filter = "進捗='未定'"

を、
   Case 3
    strTemp = strTemp & " OR 進捗='未定'"
としてやれば、
テキストボックス・コントロールによる抽出条件と「グループ」コントロールによる抽出条件を
合体させた抽出条件の文字列がstrTempに格納されます。

 抽出条件文字列が完成した後で初めて、(サブ)フォームのFilterプロパティにstrTempを代入します。


 ところで、Select Case 文でオプショングループのオプション値を使っているところからすると、
オプションボタンの複数選択は諦めたんですかね。

【12898】Re:オプショングループのオプションボタ...
お礼  naan  - 15/11/2(月) 0:47 -

引用なし
パスワード
   ▼かるびの さん:
>>strTemp = "Nz(項番, '') LIKE '*" & テキスト1 & "*'" & _
>>       " AND Nz(お客様名, '') LIKE '*" & テキスト2 & "*'" & _
>>       " AND Nz(住所, '') LIKE '*" & テキスト3 & "*'" & _
>>       " AND Nz(電話番号, '') LIKE '*" & テキスト4 & "*'" & _
>>       " AND Nz(郵便番号, '') LIKE '*" & テキスト5 & "*'" & _
>>       " AND Nz(対応者1次, '') LIKE '*" & テキスト6 & "*'" & _
>>       " AND Nz(対応日1次, '') LIKE '*" & テキスト7 & "*'" & _
>>       " AND Nz(対応者2次, '') LIKE '*" & テキスト8 & "*'" & _
>>       " AND Nz(対応日2次, '') LIKE '*" & テキスト9 & "*'"
>>
>> Me!サブクエリのサブフォーム.Form.Filter = strTemp
>> Me!サブクエリのサブフォーム.Form.FilterOn = True
>>
>>’今回作成した検索
>>  Select Case Me.グループ
>>   Case 1: Me.サブクエリのサブフォーム.Form.Filter = "進捗='OK'"
>>   Case 2: Me.サブクエリのサブフォーム.Form.Filter = "進捗='NO'"
>>   Case 3: Me.サブクエリのサブフォーム.Form.Filter = "進捗='未定'"
>>   Case 4: Me.サブクエリのサブフォーム.Form.Filter = "進捗='その他'"
>>   Case 5: Me.サブクエリのサブフォーム.Form.Filter = "項番 is not null" ←IDを全て表示
>>   Case 6: Me.サブクエリのサブフォーム.Form.Filter = "(進捗 ='OK' Or 進捗 = 'NG') AND 対応日2次 is null"
>>  End Select
>
> オプショングループにおいてオプション値が2であるオプションボタンが選択されている場合に
>このコードを実行すれば、
>「進捗='NO'」という抽出条件のみでフィルタがかかります。
> 「テキスト1」から「テキスト9」までのテキストボックスによる抽出条件は、
>フィルタに全く反映されません。
>
> その理由ですが、
>「Me!サブクエリのサブフォーム.Form.Filter = strTemp」のコードにより、
>(サブ)フォームのFilterプロパティには、テキストボックスによる抽出条件がセットされますが、
>「Case 2: Me.サブクエリのサブフォーム.Form.Filter = "進捗='NO'"」が実行されることにより、
>(サブ)フォームのFilterプロパティの値が「進捗='NO'」に書き替えられるからです。
>
>
>>テキスト用の検索と
>>グループ用の検索をどの様に組み合わせたらいいのか解りません
>
> テキストボックス・コントロールによる抽出条件と「グループ」コントロールによる抽出条件を
>合体させた抽出条件の文字列を作り、それを(サブ)フォームのFilterプロパティへの代入します。
>
> 具体的には、例えば、
>
>>Case 3: Me.サブクエリのサブフォーム.Form.Filter = "進捗='未定'"
>
>を、
>   Case 3
>    strTemp = strTemp & " OR 進捗='未定'"
>としてやれば、
>テキストボックス・コントロールによる抽出条件と「グループ」コントロールによる抽出条件を
>合体させた抽出条件の文字列がstrTempに格納されます。
>
> 抽出条件文字列が完成した後で初めて、(サブ)フォームのFilterプロパティにstrTempを代入します。
>
>
> ところで、Select Case 文でオプショングループのオプション値を使っているところからすると、
>オプションボタンの複数選択は諦めたんですかね。

かるびの様へ
出来ました!!
何度も読み返しては修正を繰り返し先ほど思い通り行きました。
ご指導有難うございました。

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