過去ログ

                                Page     117
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼複数条件の検索のかけかたについて  まさ 02/11/20(水) 18:10
   ┗訂正  まさ 02/11/21(木) 15:45
      ┗betweenの辺を確認してください。  こうちゃん 02/11/22(金) 9:12
         ┗Re:betweenの辺を確認してください。  まさ 02/11/22(金) 9:43
            ┗再現できませんので、もう少し条件をおしえてください。  こうちゃん 02/11/22(金) 16:13
               ┗Re:再現できませんので、もう少し条件をおしえてください。  まさ 02/11/22(金) 18:40
                  ┗こんどはいけるかも  こうちゃん 02/11/22(金) 19:23
                     ┗できました!(TーT)  まさ 02/11/25(月) 11:29

 ───────────────────────────────────────
 ■題名 : 複数条件の検索のかけかたについて
 ■名前 : まさ <m-amemiya@globalstaff.co.jp>
 ■日付 : 02/11/20(水) 18:10
 -------------------------------------------------------------------------
   みなさまこんばんは。
またまた質問させてください。

Private Sub 検索btn_Click()
  
  Dim key(1 To 4) As String
  Dim criteria As String
  Dim crlen As Integer
  Dim i As Integer
  
  '整理番号
  If IsNull(Me!整理番号) Then
    key(1) = ""
  Else
    key(1) = "整理番号 = '" & Me!整理番号 & "'"
  End If
  
  '名前
  If IsNull(Me!名前) Then
    key(2) = ""
  Else
    key(2) = "フリガナ = '" & Me!名前 & "'"
  End If
  
  '電話番号
  If IsNull(Me!電話番号) Then
    key(3) = ""
  Else
    key(3) = "電話番号 '" & Me!電話番号 & "'"
  End If
  
  '年齢
  If IsNull(Me!年齢検索1) Or IsNull(Me!年齢検索2) Then
    key(4) = ""
  Else
    key(4) = "年齢 between #" & Me!年齢検索1 & "# " _
    & "and #" & Me!年齢検索2 & "#"
  End If
  
  '抽出条件
  For i = 1 To 4
    If key(i) = "" Then
      '""の場合何も処理をしない
    Else
      criteria = criteria & key(i) & " AND "
    End If
  Next i
  
  '条件が1つも設定のないとき
  If criteria = "" Then
    Beep
    MsgBox "1つ以上の条件を指定してください!", vbExclamation, "検索"
    Me!整理番号.SetFocus
    Exit Sub
  End If
  
  '文字列作成
  crlen = Len(criteria)
  criteria = Left(criteria, crlen - 5)
  
  'フィルタ実行
  Me!F_main_sub.Form.Filter = criteria
  Me!F_main_sub.Form.FilterOn = True
  
End Sub

このように作ってみたのですが、

Me!F_main_sub.Form.Filter = criteria
Me!F_main_sub.Form.FilterOn = True

ここのところで引っかかってしまいます。
エラーメッセージは
「指定した式で参照されている'F_main_sub'フィールドが見つかりません」
です。

検索用のフォームに、サブフォーム(F_main_sub)を埋め込んでいます。
なにがいけないのかさっぱり解りません。
どうぞよろしくお願い致します。

WinNT/Access2000です。  

 ───────────────────────────────────────  ■題名 : 訂正  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/21(木) 15:45  -------------------------------------------------------------------------
   すみません。
  
>  'フィルタ実行
>  Me!F_main_sub.Form.Filter = criteria
>  Me!F_main_sub.Form.FilterOn = True

「F_main_sub」フォーム名が間違えていました。
正しくは「F_kensaku_sub2」でした。
申し訳ございませんでした。

しかし、直して動かしてみたのですがやはりだめみたいです。(T-T)
同じところで引っかかってしまいます。
エラー内容は
「実行時エラー'2001' 直前の操作はキャンセルされました。」
です。
よろしくお願い致します。

 ───────────────────────────────────────  ■題名 : betweenの辺を確認してください。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/22(金) 9:12  -------------------------------------------------------------------------
   まささん、こんにちは

>しかし、直して動かしてみたのですがやはりだめみたいです。(T-T)
>同じところで引っかかってしまいます。
>エラー内容は
>「実行時エラー'2001' 直前の操作はキャンセルされました。」
>です。
>よろしくお願い致します。


> If IsNull(Me!年齢検索1) Or IsNull(Me!年齢検索2) Then
>    key(4) = ""
>  Else
>    key(4) = "年齢 between #" & Me!年齢検索1 & "# " _
>    & "and #" & Me!年齢検索2 & "#"
> End If

「年齢」は日付じゃないですよね?
"#" で囲う書式は日付の時に使います。上記の記述では、たとえば "#20# AND #40#"のようになりますから、そこでエラーになっているんじゃないでしょか?

数値をbetweenで指定するときは"#"なしで以下のように指定してみてください。

    key(4) = "年齢 between " & Me!年齢検索1 & " " _
    & "and " & Me!年齢検索2 & ""

 ───────────────────────────────────────  ■題名 : Re:betweenの辺を確認してください。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/22(金) 9:43  -------------------------------------------------------------------------
   こうちゃんさん ありがとうございます。

>「年齢」は日付じゃないですよね?
>"#" で囲う書式は日付の時に使います。上記の記述では、たとえば "#20# AND #40#"のようになりますから、そこでエラーになっているんじゃないでしょか?
>
>数値をbetweenで指定するときは"#"なしで以下のように指定してみてください。
>
>    key(4) = "年齢 between " & Me!年齢検索1 & " " _
>    & "and " & Me!年齢検索2 & ""

直してやってみましたがやはり同じところがNGになってしまいます。
検索条件指定の文がおかしいのでしょうか。
それともフィルタをかける
Me!F_kensaku_sub2.Form.Filter = criteria
Me!F_kensaku_sub2.Form.FilterOn = True
ここの文がおかしいのでしょうか。

今回本を見ながら作ってみたのですが
複数条件検索をかけフォームに表示させる他のやり方はありますでしょうか。

 ───────────────────────────────────────  ■題名 : 再現できませんので、もう少し条件をおしえてください。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/22(金) 16:13  -------------------------------------------------------------------------
   まささん、こんにちは

>直してやってみましたがやはり同じところがNGになってしまいます。
>検索条件指定の文がおかしいのでしょうか。
>それともフィルタをかける
>Me!F_kensaku_sub2.Form.Filter = criteria
>Me!F_kensaku_sub2.Form.FilterOn = True
>ここの文がおかしいのでしょうか。
>
>今回本を見ながら作ってみたのですが
>複数条件検索をかけフォームに表示させる他のやり方はありますでしょうか。

試験用に作ったテーブルで同じコードでOKでした。

フィルタをかける直前にブレークポイントを設定して、criteriaの値を確認してみてください。
できればそれをここにUPしてください。
また、テーブルのフィールド型等の条件も教えていただけますか?

#ほかの方法もあります。
たとえばSQL文を組み立てて、RecordSourceを設定するとか・・

 ───────────────────────────────────────  ■題名 : Re:再現できませんので、もう少し条件をおしえてください。  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/22(金) 18:40  -------------------------------------------------------------------------
   こうちゃんさんこんにちは。

>
>試験用に作ったテーブルで同じコードでOKでした。
>
>フィルタをかける直前にブレークポイントを設定して、criteriaの値を確認してみてください。
>できればそれをここにUPしてください。
>また、テーブルのフィールド型等の条件も教えていただけますか?
>
>#ほかの方法もあります。
>たとえばSQL文を組み立てて、RecordSourceを設定するとか・・

そうですか、こうちゃんさんはOKだったんですね。
う〜ん、何がいけないんでしょう。

私が設定している条件なんですが、

T_main のデータ
整理番号 ・ 数値型
名前 ・ テキスト型
電話番号 ・ テキスト型
年齢 ・ テキスト型

クエリの作成
T_main から上記のフィールド選択(並べ替え等いっさい無し)
Q_itiran

上記のクエリを元に F_kensaku_sub というフォームを作成
レコードソースは Q_itiran それ以外はすべて規定値

検索用のフォームとして
F_kensaku を作成し、レコードソースに T_main(元となるメインテーブルです)
を指定他は規定値
検索用条件入力用のテキストボックスをフォームのヘッダー部に
整理番号、名前、電話番号、年齢検索1、年齢検索2を作成
(それぞれT_mainの、整理番号、フリガナ、電話番号、年齢、年齢フィールドに対応)
F_kensaku の詳細の所に
F_kensaku_sub2 というサブフォームを埋め込んでいます。
ソースオブジェクト F_kensaku_sub
フォームのプロパティ レコードソース Q_itiranです。

わかりにくくてすみません。
こんな感じです。
お時間があるときで構いません。
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : こんどはいけるかも  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/22(金) 19:23  -------------------------------------------------------------------------
   まさ さん、こんにちは

>整理番号 ・ 数値型
>年齢 ・ テキスト型

整理番号は数値型で、年齢はテキスト型なんですね。

数値型の場合、コーテーションは不要です。
テキスト型の場合はコーテーションが必要です。

下記を変更して試してみてください。

key(1) = "整理番号 = " & Me!整理番号 & ""
key(4) = "年齢 between '" & Me!年齢検索1 & "' " _
    & "and '" & Me!年齢検索2 & "' "

#まささんの条件で試験用テーブル作り直して試験してみました(^^)

質問するときに、条件はなるべく詳しく書いていただくと、回答も見つけやすいので、こんど質問するときは、最初からなるべく詳しく書いてくださいね。
面倒なようでも、それが早道ですよ。(^^)

 ───────────────────────────────────────  ■題名 : できました!(TーT)  ■名前 : まさ <m-amemiya@globalstaff.co.jp>  ■日付 : 02/11/25(月) 11:29  -------------------------------------------------------------------------
   こうちゃんさま

ばっちり検索かかります。感動です!
ありがとうございました。

>数値型の場合、コーテーションは不要です。
>テキスト型の場合はコーテーションが必要です。
そうなんですか。コーテーションの使い方が分かっていませんでした。
勉強になりました。

>質問するときに、条件はなるべく詳しく書いていただくと、回答も見つけやすいので、こんど質問するときは、最初からなるべく詳しく書いてくださいね。
>面倒なようでも、それが早道ですよ。(^^)
m(_ _)m
そうですよね。質問の仕方が悪かったです。反省しています。

貴重なお時間をいただきましてありがとうございました。
また分からないことが出てきたら質問させてください。
よろしくお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 117