アクセスでフォームを作成し、入力項目を5箇所用意しました。
その入力項目によって、OR検索とAND検索を行わせたいと思っています。
OR検索に関しては問題無いのですが、AND検索をさせた場合、5箇所全てを埋めないと結果が得られません。
AND検索で5項目の内3項目が空でも残りの2項目が該当すればデータを表示させたいのですが、方法がわかりません。
アクセス2000を使っています。
よろしくお願いいたします。

A 回答 (2件)

御疲れ様です



VBAで宜しければ、こんな感じになります



Private Sub コマンド0_Click()
Dim stFormNameAs String
Dim stWhereAs String

stFormName = "AAA"
stWhere = 条件文作成("AND")
DoCmd.OpenForm stFormName, , , stWhere

End Sub



Private Function 条件文作成(stConnector As String) As String
Dim stSQLAs String

stSQL = ""
stConnector = " " & Trim(stConnector) & " "

If IsNull(Me.Txt条件01.Value) = False Then
If stSQL <> "" Then stSQL = stSQL & stConnector
stSQL = stSQL & "(項目01 = " & Me.Txt条件01.Value & ")"
End If

If IsNull(Me.Txt条件02.Value) = False Then
If stSQL <> "" Then stSQL = stSQL & stConnector
stSQL = stSQL & "(項目02 = '" & Me.Txt条件02.Value & "')"
End If

If IsNull(Me.Txt条件03.Value) = False Then
If stSQL <> "" Then stSQL = stSQL & stConnector
stSQL = stSQL & "(項目03 = #" & Format(Me.Txt条件03.Value,"mm/dd/yyyy") & "#)"
End If

If IsNull(Me.Txt条件03.Value) = False Then
If stSQL <> "" Then stSQL = stSQL & stConnector
stSQL = stSQL & "(項目04 = '" & Me.Txt条件04.Value & "')"
End If

If IsNull(Me.Txt条件03.Value) = False Then
If stSQL <> "" Then stSQL = stSQL & stConnector
stSQL = stSQL & "(項目05 = " & Me.Txt条件05.Value & ")"
End If

If stSQL <> "" Then stSQL = "(" & stSQL & ")"

条件文作成 = stSQL

End Function

この回答への補足

早速の回答ありがとうございます。
現在テストしているのですが、まだ上手くはいってません。
stWhereの返り値まではきちんと動いているので、何とか解決したいと思います。
なにぶん初心者なものなので、基本的なミスをしてる気がします。

補足日時:2002/02/27 09:58
    • good
    • 0

こんにちは。

maruru01です。

VBAを使えば出来ますが。
検索対象のテーブルのレコードセットを作り、Findの条件に、項目が空でないなら、
" AND (フィールド名 = " & 条件 & ")"
をくっ付けていけばいいでしょう。
では。

この回答への補足

早速の回答ありがとうございます。
アクセスの初心者なので、レコードセットという言葉さえよく知りませんでした。
調べながらなんとかやっていこうと思います。

補足日時:2002/02/27 10:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qアクセス検索フォーム【大項目→中項目→小項目と絞り込みながら検索】する方法を教えてください。

アクセス初心者です。
このサイトや手持ちのテキスト等でしばらく調べてがんばってみましたが、いろいろ試した不要なデータであふれかえってしまい拉致があかず、私が初心者であることからアクセス構築の考え方そのものにも不安があり、不勉強でお恥ずかしいのですがご質問させていただくことにしました。
お詳しい方ご教授願います。

やりたいことは、在庫管理のようなことで該当する在庫がいまどこにおいてあるのかを検索フォームを使って検索できるようにしたいのです。

在庫は大項目、中項目、小項目と分類しております。

検索フォームでコンボボックスなどを3つ配置し、大項目を一つ目のコンボボックスなどから選ぶと、次の二つ目のコンボボックスからは選んだ大項目から該当する中項目のリストが自動で選べ、中項目を選ぶと三つ目のコンボボックスからは選んだ中項目に該当する小項目のリストが自動で選べるような形にしたいと思っています。

大項目表テーブル
1 大項目1
2 大項目2
3 大項目3
というものを作って、

大項目1の中項目表テーブル
11 中項目A
12 中項目B
13 中項目C   このような中項目表テーブルは大項目1~3で3つ。
さらに、

中項目Aの小項目表テーブル
21 小項目あ
22 小項目い
23 小項目う   このような小項目表テーブルは中項目A~Cで9つ。

一応上記のような表は用意しました。


何年か前にマイクロソフトのMOS試験のアクセス2000には合格しましたが、それ以来アクセスをあまり触っておらず、いよいよ必要に背回れて困ってしまいました。不勉強で申し訳ありませんがよろしくお願いします。

アクセス初心者です。
このサイトや手持ちのテキスト等でしばらく調べてがんばってみましたが、いろいろ試した不要なデータであふれかえってしまい拉致があかず、私が初心者であることからアクセス構築の考え方そのものにも不安があり、不勉強でお恥ずかしいのですがご質問させていただくことにしました。
お詳しい方ご教授願います。

やりたいことは、在庫管理のようなことで該当する在庫がいまどこにおいてあるのかを検索フォームを使って検索できるようにしたいのです。

在庫は大項目、中項目、小項目...続きを読む

Aベストアンサー

この辺を参考に。
■コンボボックス作成の応用講座-1:SampleFile192
http://www.accessclub.jp/samplefile/samplefile_192.htm
■コンボボックス作成の応用講座-2:SampleFile193
http://www.accessclub.jp/samplefile/samplefile_193.htm

Qアクセス2000検索箇所作成について

こんにちは。
アクセスの2000を使用しております。テーブルで顧客リストなる基データ(約5000件)は既に作成済みで、フォームにて、基データを表示させております。で、5000件のリストにはそれぞれ11~15桁のIDが割り振られています。
そこで質問なのですが、例えばそのID、もしくは名前、会社名(どれか一つだけを入力)を入力して、該当データを一箇所に抽出するという方法はどのようにしたら良いでしょうか??
何分初心者なものですので、噛み砕いて教えていただければと思いますのでよろしくお願い致します。
Webページ等があればそちらも、記載して頂けたら幸いです。

Aベストアンサー

色んなやり方が考えられます。
ここでは、検索パラメータを入力するフォームを用意する方法を示します。

<顧客名簿>
ID____名前_______フリガナ________会社名_郵便番号_都道府県_市区町村_番地_ビル等
1_____鈴木 一郎__スズキ イチロウ_関西組
2_____中村 太郎__ナカムラ タロウ_関東組
3_____山田 信次__ヤマダ シンジ___関東組

<検索フォーム>

ID:_____[________]
名前:___[_______________]
会社名:_[関東______________]

<検索結果>

2_____中村 太郎__ナカムラ タロウ_関東組
3_____山田 信次__ヤマダ シンジ___関東組

*表示フォーム=帳票ですと、このように表示されます。

さて、以下は、検索コマンドボタンのイベントに書いたコードです。

Private Sub cmdLookupCustList_Click()
On Error Resume Next
  Dim stLinkCriteria As String

  ' ----------------------------
  ' [ID] が指定されている場合
  ' ----------------------------
  stLinkCriteria = IIf(Nz(Me.ID) > 0, "[ID]=" & Me.ID, "")
  If Len(stLinkCriteria & "") = 0 Then
    ' ---------------------------------------------------
    ' [ID] が指定されていない場合のみ他の検索条件を採用
    ' ---------------------------------------------------
    stLinkCriteria = IIf(Len(Me.名前 & "") > 0, _
               "[名前] LIKE '" & Me.名前 & "*'", _
               "")
    If Len(stLinkCriteria & "") > 0 Then
      ' ----------------------------------------------------
      ' [名前] が指定されていれば、AND文にするか否かを判定
      ' ----------------------------------------------------
      stLinkCriteria = IIf(Len(Me.会社名 & "") > 0, _
                 stLinkCriteria & " AND [会社名] LIKE '" & Me.会社名 & "*'", _
                 stLinkCriteria)
    Else
      ' -------------------------------------------------------------------
      ' [名前] が指定されていなければ、[会社名]の指定の有無で条件文を作成
      ' -------------------------------------------------------------------
      stLinkCriteria = IIf(Len(Me.会社名 & "") > 0, "[会社名] LIKE '" & Me.会社名 & "*'", _
                "")
    End If
  End If
  If Len(stLinkCriteria & "") > 0 Then
    DoCmd.OpenForm "顧客名簿", , , stLinkCriteria, acFormReadOnly
  Else
    MsgBox "検索条件が不明です!", vbInformation, " お知らせ"
  End If
End Sub

色んなやり方が考えられます。
ここでは、検索パラメータを入力するフォームを用意する方法を示します。

<顧客名簿>
ID____名前_______フリガナ________会社名_郵便番号_都道府県_市区町村_番地_ビル等
1_____鈴木 一郎__スズキ イチロウ_関西組
2_____中村 太郎__ナカムラ タロウ_関東組
3_____山田 信次__ヤマダ シンジ___関東組

<検索フォーム>

ID:_____[________]
名前:___[_______________]
会社名:_[関東______________]

<検索結果>

2_____中村 太郎__ナカムラ タロウ_関東組
...続きを読む

Qアクセス オプションボタン 「or」「and」 どちらかだけを選択できるようにしたい

エクセルのオートフィルタのオプション機能のようなものをアクセスで作成しようとしています。
早速つまづいているのですが
「or」を選択すれば「and」は選択されないと言う様に、
どちらも選択されることはないようにしたいのですが
どうすればいいのでしょう?
ご教授よろしくお願いします。

Aベストアンサー

いろいろな方法があると思いますが、方法2つ紹介します。

(1)オプショングループを使う
オプショングループを構成すると、そのグループ内のものは1つしか選択できなくなります。

以下のサイトがわかりやすいと思います。
http://www.mahoutsukaino.com/ac/ac2000/ac2000/option/option01.htm

また、オプショングループで検索してみてください。
その他いろいろ説明されているサイトが見つかると思います。


(2)自力で処理する

and の方のオプションボタンの名前を「op_and」、
or の方のオプションボタンの名前を「op_or」と仮定します。
フォームが表示された時に、一方のみをTrueに設定(初期化)しておきます。
その後、各オプションボタンがクリックされた時に、もう一方の値を逆に設定します。

以下例

Private Sub Form_Load()
  Me.op_and = True
  Me.op_or = Not Me.op_and
End Sub

Private Sub op_and_Click()
  Me.op_or = Not Me.op_and
End Sub

Private Sub op_or_Click()
  Me.op_and = Not Me.op_or
End Sub

参考URL:http://www.mahoutsukaino.com/ac/ac2000/ac2000/option/option01.htm

いろいろな方法があると思いますが、方法2つ紹介します。

(1)オプショングループを使う
オプショングループを構成すると、そのグループ内のものは1つしか選択できなくなります。

以下のサイトがわかりやすいと思います。
http://www.mahoutsukaino.com/ac/ac2000/ac2000/option/option01.htm

また、オプショングループで検索してみてください。
その他いろいろ説明されているサイトが見つかると思います。


(2)自力で処理する

and の方のオプションボタンの名前を「op_and」、
or の方のオプ...続きを読む

Qアクセス:フォーム入力:【大項目→中項目への絞りこみ入力】方法を教えてください。

アクセス初心者です。よろしくお願いします。
【やりたいこと:次のような大項目→中項目への絞りこみ入力】
フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。

◆まず、テーブルで「大項目コード」表があります。
  1  A
  2  B
  3  …
◆別のテーブルで、
「Aの小項目」表
 11  ○ 
 12  × 
 13  △  
 
「Bの小項目」表
 21  ●
 23  ■
 24  ▲
というようなものがあります。

そこで、フォームで「大項目」フィールドに「1」(=A)を入力すると「小項目」フィールドに自動でコンボボックスのようなもので「○、×、△」がリストが出てコード番号(11,12,13)が入力できる、同様に「大項目」に「2」(=B)と入力するとリスト「●、■、▲」で選んで入力したいのです。

私が初心者であることから、上記のようなアクセス構築の考え方そのものも邪道なものかどうか、不安があります。
要は、【大項目→中項目への絞りこみ入力】ができればいいのです。できますなら、できるだけシンプルな方法を教えてくだされば幸いです。
よろしくお願いいたします。

アクセス初心者です。よろしくお願いします。
【やりたいこと:次のような大項目→中項目への絞りこみ入力】
フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。

◆まず、テーブルで「大項目コード」表があります。
  1  A
  2  B
  3  …
◆別のテーブルで、
「Aの小項目」表
 11  ○ 
 12  × 
 13  △  
 
「Bの小項目」表
 21  ●
 23  ■
 24  ▲
というようなものがあります。

そこで、...続きを読む

Aベストアンサー

コンボボックスのプロパティは大体このままで大丈夫であると思います。

me.コンボ2.requeryについては

2番目のコンボボックスのプロパティのイベントのタブの変更時のところに何か今入っていたらそれを選んで消してください。 そのあとフォーカスを変更時に充てると、▼と・・・という四角が出てきますので、・・・のほうを選択して「コードビルダ」を選んでください。
そうすると
Private Sub コンボ1_Change()

End Sub

と出てきますので、その間に
Private Sub コンボ1_Change()
me.コンボ2.requery
End Sub

と書いて画面を閉じていただければ大丈夫です。

最初のコンボボックスの名前= コンボ1
2番目のコンボボックスの名前= コンボ2

それで試してみてください。 
説明が下手で申し訳ありません。

Qアクセス 2つのフィールドをOR検索したい

受注管理システムを作っています。アクセス初心者です。VBAは独学で少しかじっている程度です。

受注Tには、受注日・得意先・工事名などほぼ全ての情報が入っています。
その中に、フィールド「営業担当者」と「工事担当者」があります。

「山田太郎」が営業担当者だったり、工事担当者だったり、どちらも兼務することもあります。

「山田太郎」が関係する、受注Tのレコードを全て検索結果に出したい場合、どのようにしたらよいですか?

自分なりに、OR検索を試みましたが、うまく行きませんでした。

Aベストアンサー

>表が変化しない。
以下のことを確認してみてください。


「担当者」テーブルに重複した名前がある。

山田
鈴木
山田

のような場合、山田を選択しても名前が
重複しているため変化はありません。


このカテゴリの人気Q&Aランキング

おすすめ情報