Public Function record_idou() As Boolean
If IsNull(Me.[F1]) Then
MsgBox "F1未入力時はレコード移動できません"
record_idou = False '戻り値設定
Else
record_idou = True '戻り値設定
End If
End Function
Private Sub cmd前へ移動_Click()
If record_idou() = True Then
DoCmd.GoToRecord , , acPrevious
End If
End Sub
Call record_idou
DoCmd.GoToRecord , , acPrevious
Public Sub record_idou()
If IsNull(Me.[F1]) Then
MsgBox"F1未入力時はレコード移動できません"
Exit Sub
End If
End Sub
は、イメージとしては
' Call record_idou
Public Sub record_idou()
If IsNull(Me.[F1]) Then
MsgBox"F1未入力時はレコード移動できません"
Exit Sub '─┐
End If ' │ここに飛ぶ
End Sub '←┘
DoCmd.GoToRecord , , acPrevious
hatenaさん ありがとうございます。Subプロシージャ、Functionプロシージャの事は少し調べました。何となくしか分かってませんが実際に試そうと思いまして(別のコードで同じフォームに記述しているものがあるので)下記の様な内容のでプロシージャを作成しました。
Public Sub record_idou()
If IsNull(Me.[F1]) Then
MsgBox"F1未入力時はレコード移動できません"
Exit Sub
End If
End Sub
これをフォームのレコード移動ボタンに下記を記述しました。
Call record_idou
DoCmd.GoToRecord , , acPrevious
試すとF1未入力時・・・・のメッセージは出るのですがレコード移動はしてしまいます。Exit Subが効いてません。
何か記述不足しているのでしょうか?
そもそも、csvもexcelもデータベースとして扱っているはずなのに、 Data Source=を使用しないのは、なぜなのでしょうか?
Data SourceはADODB.Connectionの必須プロパティになりますので
「使用していない」 のではなく
タークンさんの記述方法では 「明示していない」 というのが正確な表現になります
Sub Sample1()
Dim adoCn As ADODB.Connection
Dim incantation As String
Dim testDir As String
testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
Set adoCn = New ADODB.Connection
adoCn.Provider = "Microsoft.ACE.OLEDB.12.0"
adoCn.Properties("Extended Properties") = "Text;HDR=No"
adoCn.Open testDir
incantation = adoCn.ConnectionString
adoCn.Close
adoCn.Open incantation
Debug.Print adoCn.State
adoCn.Close
Set adoCn = Nothing
MsgBox "接続文字列中のData Sourceの位置は " & _
InStr(1, incantation, "Data Source", vbTextCompare)
End Sub
ちなみに CSVをレコードセットとしてOpenするのが目的でしたら、以下のような簡略表記も可能です
Sub Sample2()
Dim adoRs As ADODB.Recordset
Dim testDir As String
Dim strSQL As String
testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
strSQL = "SELECT * FROM [Text;DATABASE=" & testDir & ";HDR=NO;].holiday.csv;"
Set adoRs = CurrentProject.Connection.Execute(strSQL)
If Not adoRs.EOF Then MsgBox "CSVの列値: " & adoRs.Collect(0)
adoRs.Close
Set adoRs = Nothing
End Sub
Dim strFilter As String
If Me.[cb1].Value <> "" Then
strFilter = strFilter & " AND フィールド1=" & Me.[cb1].Value
End If
If Me.[cb2].Value <> "" Then
strFilter = strFilter & " AND フィールド2=" & Me.[cb2].Value
End If
If Me.[cb3].Value <> "" Then
strFilter = strFilter & " AND フィールド3=" & Me.[cb3].Value
End If
strFilter = Mid(strFilter, 6) '先頭の" AND "を削除
Me.Filter = strFilter
Me.FilterOn = (strFilter <> "")
つまりこのコードは、人間から同じように見えているものを、コンピュータにも同じように見えるための処理ということでしょうか?
ただし、F1フィールドを入力必須にしたいのなら、テーブルのデザインビューでF1フィールドのプロパティの「値要求」を「はい」(テキスト型の場合はさらに「空文字列の許可」を「いいえ」)にしておけば済みますので、実際に使う必要性はないですね。
理由はhirotonさんから回答済みです。
このような場合の対処法としては、SubではなくFunctionにして戻り値で次の処理を振り分けます。
Exit Sub
は「現在のSubプロシージャを終了する」命令ですは、イメージとしては
となり、
record_idou
プロシージャが終了して、それに続くDoCmd.GoToRecord , , acPrevious
が実行されますつまり、この例では意味のない
Exit Sub
ですね(続く処理がないのでどうせ何もせずプロシージャが終了する)hatenaさん ありがとうございます。Subプロシージャ、Functionプロシージャの事は少し調べました。何となくしか分かってませんが実際に試そうと思いまして(別のコードで同じフォームに記述しているものがあるので)下記の様な内容のでプロシージャを作成しました。
Public Sub record_idou()
If IsNull(Me.[F1]) Then
MsgBox"F1未入力時はレコード移動できません"
Exit Sub
End If
End Sub
これをフォームのレコード移動ボタンに下記を記述しました。
Call record_idou
DoCmd.GoToRecord , , acPrevious
試すとF1未入力時・・・・のメッセージは出るのですがレコード移動はしてしまいます。Exit Subが効いてません。
何か記述不足しているのでしょうか?
hatenaさん。。。。。。いつもいつも すぐな対応ほんとにありがとうございます。。。^^
>>うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。>>
>>会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
>>あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。
会社のACCESSプログラムは 外部に持ち出すことは ぜーったいダメです。。。。;;
システムの会社じゃないので、パソコンもできる人はあまりいない現状です。。。;;
それだけに たとえプログラムのソースコードだからって言っても 持ち出すことはダメ!の一点張りなんです。。。;;
ごめんなさい。。。。。;;
>>正確な情報がつかめないと先に進むのは難しそうです。
ですよね。。。。。。。。;;
とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。
明日 出勤したらすべての確認を行います。。。^^
なにがいけないのかな?????
ありがとうございます^^
うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。
会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。
正確な情報がつかめないと先に進むのは難しそうです。
とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。
メインフォーム
フォーム名 MSTmain実査実績一覧
レコードソース (空欄)
メインフォーム上のチェックボックス
コントロールソース (空欄)
名前 Chk北海道、Chk秋田、・・・Chk沖縄 (48個)
メインフォーム上のサブフォームコントロール
名前 SubMST実査実績一覧
サブフォーム
レコードソース MST実査実績一覧
既定のビュー 帳票フォーム または
サブフォーム上のチェックボックス
コントロールソース (空欄)
名前 北海道、秋田、・・・沖縄 (48個)
テーブル MST実査実績一覧
フィールド名 データ型
ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型
・
・
・
沖縄 Yes/No型
都道府県名のYes/No型フィールドが48個
異なる部分があったら、上記のようなフォーマットで修正したものを提示してください。
hatenaさん れんらくありがとうございます
ただ このACCESSプログラム自体が会社にあるもので。。。;;あたしの記憶で話してます
>>レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
>>既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
>>これらの設定を教えてください。
それらに何かを設定した記憶はありません。空白です。。。
>>メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボック>>>>ス、、、あるいはコンボボックス それとチェックボックスが48個設定してあります。。。^^
>>Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいで>>す。
ごめんなさい。。。;;
>>メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
>>それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。
メインフォームの名前が MSTmain実査実績一覧 です。。。
>>チェックボックスのコントロールソースの設定はどうなってますか。
>>*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあり>>ます。
>>チェックボックスの名前も教えてください。
チェックボックスのコントロールソースの設定も 特に何もしてません 空白です。。。
チェックボックスの名前は メインフォームが Chk北海道
Chk秋田
⇃
Chk沖縄 です。。。
サブフォームが 北海道
秋田
⇃
沖縄 です。。。
>>サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態で>>す。
>>このチェックボックスのコントロールソースと名前も教えてください。
ここも特に何も設定はしてません
>>あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
>>投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
>>下記の画像の赤丸で囲んだボタンです。
ごめんなさい。。。。。;;プログラム自体が会社です。。。;;
見ていただきたいのですが。。。。あたしの手元に プリントアウトした画像が一枚あるだけです。。。;;
宜しくお願い致します
レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
これらの設定を教えてください。
Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいです。
メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。
チェックボックスのコントロールソースの設定はどうなってますか。
*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあります。
チェックボックスの名前も教えてください。
このチェックボックスのコントロールソースと名前も教えてください。
あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
下記の画像の赤丸で囲んだボタンです。
hatenaさん。。。連絡ありがとうございますーー
>>%%{fg:silver}%%{fg:silver}まず、メインフォームのレコードソースの設定を教えてください。
この質問の意味が分かりません。。。。。。。;;
ごめんなさい。。。。::特になにも設定してるわけではありません。;;
>>¥空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
??テーブルかクエリならそのフィールド名を提示してください。
メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボックス、、、あるいはコンボボックス それとチェックボックスが48個設定してあります。。。^^
>>サブフォームのレコードソースの設定を教えてください。
テーブルのMST実査実績一覧をサブフォームとして、、、データベースのような、、、一覧表を作ってあります。。。^^
サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態です。
ホントはクエリを使って、→のようなデーターベースを構築したいのですが、、、、名前は ”SubMAIN実査実績一覧”
MST実査実績一覧を軸に、3つのテーブルを"ID"で、リレーションシップでつなげてます。。。^^
それだとうまく抽出ができないから、、、;;
あきらめて”MST実査実績一覧”だけ単体でテーブルのまま使ってます。。。^^
>>テーブル名またはクエリ名
テーブルは4つ
☆MST実査実績一覧
”ID”(主キー)、”年月日”(日付型)、”担当者”(文”字列型)、”都道府県”(整数型)、都道府県(チェックボックス型)が48個並んでいます。。。^^、それと役職(整数型)と交通手段(整数型)があります。。。。^^
☆MST都道府県
”ID”、”都道府県”
☆MST役職名
”ID”、”役職名”
☆駅から目的地までの交通手段
”ID””交通手段”
IDは全て 整数型(INTEGER)です。基づくレコードは文字列型(STRING)
>>サブフォームの「既定のビュー」の設定も教えてください。%%
これもわかんないです。。。。。;;既定のビューなんて設定してないです。。。;;
とりあえず上記を回答ください。%%
何卒ご指導よろしくお願いいたします
ちょっとその説明では状況を読み取れません。
ひとつずつ確認していきますので、回答してください。
まず、メインフォームのレコードソースの設定を教えてください。
空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
テーブルかクエリならそのフィールド名を提示してください。
サブフォームのレコードソースの設定を教えてください。
テーブル名またはクエリ名
そのフィールド名
サブフォームの「既定のビュー」の設定も教えてください。
とりあえず上記を回答ください。
Excelだと要領的に厳しい状態なんです。。。
ACCESSなら メインフォームの中にサブフォームを設定して
いろいろなプログラム構築した経験があるから いいかな?
とおもって。。。
ACCESSあきらめて、、EXCELでやるしかないのかな???
Excelで頑張るのはどうでしょう?
>お怒り、見捨てないで、
例えば、刺身包丁を使って木材加工しようとしていたら、難しいよね、と思いませんか?
メインフォームに日付の開始日(テキストボックス 日付)と終了日(テキストボックス 日付)を設けています。その他”ID(コンボボックス Integer)”””社員名(コンボボックス String) 後は都道府県(チェックボックス YesNo型)で48都道府県が並んでいる状態です。それとコマンドボタンを4つ置いてます。(新規、編集、クリア、統計MAP)があります。そこにサブフォーム(一覧表のフォームです。。。)も表示させてあります。”
一つのMSTとなるフォームがあって、全てIDでリレーションシップでテーブルを最初に(クエリではない)つなげています。
主Keyは社員(勝手に番号[ID]を付けています。)です。サブフォームには社員名単位でチェックボックスが48個 都道府県ごとに並んでいます。
最終的には コマンドボタンの”統計MAP”ボタンで どの社員さんが、どこの都道府県を訪れているか 分布図が表示できるものを作りたいと思っています。
お力を貸し願えましょうか。何卒宜しくお願いします
'''Private Sub Cmd新規登録_Click()
MyForms=Forms!MAINMST実査実績!Chk実査flg
'ADO接続開始
Dim Cn ADODB.Connection
Dim Rs ADODB.Recordset
Set Cn = CurrentProject.Connection
Set Rs = New ADODB.Recordset
Rs.Open "MST実査実績一覧",Cn,adOpenkeyset,adLockOptimistic
Dim a,b,c,d,e,f,g As Variant
a=""
a=Nz(Dlookup("ID","MST実査実績一覧","実査住所='" &
Me.Txt実査住所.Value & "'),"" AND "& "担当者='"
& Me.Cmb実査担当者.Value & "'"),"")
a=MsgBox("登録しますか?",vbYesNo + vbDefaultButton1)
If a = vbYes Then
'登録
Rs.AddNew
'上記の個所で実行時エラー”テーブルが設定されたレコードが必要なので、レコードの追加や変更ができません。と表示されてしまいます。
Rs!年月日 = Me.Txt実査実施日
Rs!担当者 = Me.Cmb実査担当者
'チェックボックス
Rs!北海道=Me.Chk北海道.Value
Rs!青森=Me.Chk青森.Value
' ⇃
' ⇃
' ⇃
Rs!沖縄=Me.Chk沖縄.Value
Me.SugMST実査実績一覧.Form.Filter=""
Me.SubMST実査実績一覧.Form.FilterOn=False
Rs.Update
a=Dmax("ID","MST実査実績一覧")
Me.Cmb実査ID.Value=a
b=Dlookup("年月日","MST実査実績一覧","ID=" & a)
Me.Txt実査実施日.Value=b
Msgbox("登録完了しました。"
'ADOを切断
Cn.Close
Set Cn=Nothing
End Sub'''
お怒りなことは重々承知の上、再度投稿させていただきます。
何卒 何卒ご指導よろしくお願いいたします。。。見捨てないでください。。。;;
非公式なので、事前通告なしに使えなくなる可能性はありますね。
公式のものなら、使えなくなる前に事前通告はあるはずです。
その辺をどう考えるか次第ですね。
かつては ISAMStats ってのが非公式で存在してたけど、途中で無くされちゃいましたね
Data SourceはADODB.Connectionの必須プロパティになりますので
「使用していない」 のではなく
タークンさんの記述方法では 「明示していない」 というのが正確な表現になります
ちなみに CSVをレコードセットとしてOpenするのが目的でしたら、以下のような簡略表記も可能です
前回の回答のリンク先にていねいに説明してありますので、もう一度よく読んで、質問文を編集してください。
あの説明で分からないとなると、このような掲示板でのやりとりで解決に至るのは困難だと思います。
あと、フォームの構成がどうなっているかの説明も追加してください。
下記の点についての情報を追記してください。
メインフォーム、サブフォームのレコードソースの設定
リンクフィールドの設定
テーブルのフィールド構成、フィールドのデータ型、主キー設定
人間には同じように見えても、コンピューター(Access)からはまったく別物です。
例えば、
人間が見てテキストボックスが空の場合に、入力を即したい場合がよくあります。
未入力(Null)、""(空文字列)、スペースのみ、は人間からみたらすべて同じですが、
コンピューターからはすべてまったく別物に見えます。
未入力(Null)、スペースのみを""に変換して、テキストボックスが空だとコンピューターにもわかるようにしてあげる必要があります。
コンピューターは人間のように融通がききませんので。
最近はAIで結構融通が利くようになってきていますが、VBAは一昔前から進歩してませんからね。
Nullと空欄は厳密には違います。
よって「= ""」で「""」と判断できるのは「""」だけで、NULLだと同じではないと判断されます(確かそうだったはず)
プログラマーは過去に確実に動いたコードを多用する傾向があるので、おそらく前担当者がその方法に慣れていたのではないでしょうか。
正にIf文で使われております。
質問の為当該箇所のみ抜粋して記述しました。
Nullも長さのない文字列も同じように見えるのに、わざわざ変換をかけていることに
どのようなメリットがあるのか、識者の皆様の考えをお聞かせいただきたいです。
そのコード単体で1行になることはないはずです。エラーになりますので。
たぶん、下記のような感じで使われているのではないでしょうか。
(strFilter <> "")
は、strFilter が ""(空文字列) でなければ True、""(空文字列) なら False になります。下記のコードと同義になります。
5行のコードが1行で済むのでついつい使ってしまいますが、コードの意味のつかみやすさからいけば、5行で書いた方がいいですね。
VBAに直接記述します。
Private Sub setFilter() は変数ではなくプロシージャです。
Subプロシージャ、Functionプロシージャについて調べてください。
#1 のhirotonさんの最初のコードの
'フィルタをかける処理
の部分を #2 の私のコードに置き換えればOKです。2重に処理しているようですね。
まず「Nz」でテキストボックスに文字列が入っていればそれを、入っていない場合は「""」(空欄)を「Trim」に渡しています。
「Trim」では渡された文字列に前後の空白があればこれを削除します。「""」が渡された場合は何もしません。
ただ最後の「 = ""」は謎ですね。
そんな使い方できるんだろうか。
IDが増えても(レコード件数が増えても)、コードを修正する必要はないです。
全レコードを対象にチェックします。
実際にやってみてうまくいかなかったのでしょうか。
もし、そうなら、どのようなデータでどのような結果になったのか、どこが想定と違うのか説明してください。
hirotonさん haetnaさん ありがとうございました。
haetnaさんの回答にある Mid(strFilter, 6) は何かで見た事がありますがやっと意味がわかりました。”はカウントせずに半角スペースはカウントに入るのですね。因みにMe.FilterOn = (strFilter <> "")の右辺はTrueと同じ意味になるのでしょうか?
hirotonさんの回答にある Private Sub setFilter() 'フィルタをかける処理 ですが変数自体にコード記述が出来るのですね? フォーム上のイベントにはそれは出来ないのでVBA画面に直接記述したらいいのでしょうか?
知識不足で、すみません。
hatenaさま 参考にさせていただき、今テーブルに入力しているID19から22のチェックができるようになりました。今後チェックするIDが34まで増え、19から22、その途中27から34も一度にチェックしたい時などには、どのように書き換えればよろしいでしょうか?DMin("ID", "T1")やDMax("ID", "T1")を19や34にして複数同じなものを作る以外のスマートの方法をお願いできますか?
マスタとトランザクションをキーワードに調べてみることをオススメします
「単価」は一般的にその商品に付随するデータ、ユニークなキーによって決定される単一のデータなので「集計データ」と見なすことはまずないでしょう
実際にどのように管理すべきか?は検討の余地の有るところですが今回の質問とは関係の薄い話ですね
新しい質問で、テーブル構造を提示した上で、意見募集するのはどうでしょう?
横からすいません。
集計データをテーブルに格納しない場合、例えば商品Aの単価が100円から200円に変わった場合などに合計金額などに不都合が発生するように感じたのですが、問題ないのでしょうか?
ありがとうございます!
そもそも論が聞けてスッキリしました。
頭をリフレッシュして違う方向からトライしてみようと思います。
なんとか抜け出せて本当に助かりました。
「総合計」のような集計データはテーブルには格納しないというのが、データベース設計の基本です。
必要に応じて、その都度計算するような設計にします。
集計クエリ、演算コントロールでのSum,Count関数、DSum,DCount関数など、状況に応じて適切な方法を使いわけましょう。
例えば、今回の質問のフォームでは演算コントロールでその都度、計算してますよね。
どうしてもテーブルに格納するというのなら、サブフォームの更新後処理で代入するということになります。
が、更新や入力か必ずそのフォームから行われるのならいいですが、そうとは限らない場合もあるでしょうし、更新後処理がエラーなどでうまくいかないなど、など、、、その集計が正しいという保証がないので、通常はそのようなことはせずに、その都度計算します。
こちら解決できました。ありがとうございます。
原因は下記リンク先にある通り「CDO.Message」は「SMTP over SSL (ポート465)」の SMTP認証方式を使う為、「TLS/STARTTLS (ポート587)」のSMTP認証方式には対応していないとのことでした。
https://mofuken.blogspot.com/2014/07/windows-cdomessage.html
ただ現在使用しているメールサーバーが「SMTP over SSL (ポート465)」に対応していない為、ちょっと修正する必要がありそうです。
当面はSSLをFALSにしてポートを25で使うことで回避することにしました。
ご返信ありがとうございます。
原因は教え得頂いたリンクの2番目と同じでした。
>VBAからCDOを使用してメール送信時にサーバ接続エラー
こちら無事解決しました。
ちょっと調べましたがこれと同じでしょうか?
CDOでMicrosoft365メールが使えなくなったので調べてみた #mail - Qiita
https://qiita.com/mindwood/items/c5b4475db6ddbfdb0372
中小企業情シス稼業 : VBAからCDOを使用してメール送信時にサーバ接続エラー
https://www.1josys.com/archives/38212996.html
なぜか文字コードを記載すると、表記が文字化けしてしまいましたので、別途記載します。
コード中の「文字コード」という部分には「ISO-2022-JP」と記載しています。
具体的なフィルタ文字列生成部分に関しては、複数の組み合わせに対して、「直前の出力があった場合だけ
"AND"
を出力する」ということになりますが、これを毎回チェックするのはめんどくさいので、「出力があればとりあえず" AND "
を付ける」「最後に無駄な" AND "
を消す」ようにしますこれ入力してたらコード例をhatenaさんが投稿されたのでコードはそちらを参考に
このように、「似たような処理」を「共通になるような処理」に落とし込めればすっきりしたコード記述ができるようになります
数値が重複する場合があるんですね。
はい、あります。その場合もあると お伝えしなければいけなかったのですね。すみません。
伝達事項の少ない中で、ご返信本当にありがとうございます。
上記を参考に作成してみます。また壁に当たるかと思いますが、ご指導お願いいたします
質問不成立です
すみません。
未選択(Null)の場合は条件なしということですね。
条件式変数に選択してあれば条件を追加していくという方法でいいでしょう。
フィールド名は適当、データ型は数値型の場合ですので、実際のものに合わせて修正してください。