過去ログ

                                Page      23
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼フィルタの複数抽出について  ゆき 02/9/7(土) 11:49
   ┗Re:フィルタの複数抽出について  Hirofumi 02/9/7(土) 16:19
      ┗Re:フィルタの複数抽出について  ゆき 02/9/7(土) 17:13
         ┗Re:フィルタの複数抽出について  Hirofumi 02/9/7(土) 18:36
            ┣Re:フィルタの複数抽出について  ゆき 02/9/9(月) 13:12
            ┃  ┗Re:フィルタの複数抽出について  Hirofumi 02/9/9(月) 18:51
            ┗Re:フィルタの複数抽出について  ゆき 02/9/9(月) 18:51
               ┗Re:フィルタの複数抽出について  Hirofumi 02/9/9(月) 19:03
                  ┗Re:フィルタの複数抽出について  ゆき 02/9/9(月) 19:09
                     ┗Re:フィルタの複数抽出について  ゆき 02/9/9(月) 19:33
                        ┗Re:ばたばたしてスイマセン  Hirofumi 02/9/9(月) 20:11
                           ┗ありがとうございました^^  ゆき 02/9/10(火) 9:21
                              ┗Re:ありがとうございました^^  Hirofumi 02/9/10(火) 19:39
                                 ┗Re:ありがとうございました^^  ゆき 02/9/11(水) 11:16
                                    ┣ちょっと話がかわちゃうんですが(汗  ゆき 02/9/11(水) 13:19
                                    ┃  ┗Re:別のスレッドにした方が善いかも  Hirofumi 02/9/11(水) 19:25
                                    ┃     ┗Re:別のスレッドにした方が善いかも  ゆき 02/9/12(木) 9:08
                                    ┗Re:ありがとうございました^^  Hirofumi 02/9/11(水) 19:11
                                       ┗Re:ありがとうございました^^  ゆき 02/9/12(木) 9:15

 ───────────────────────────────────────
 ■題名 : フィルタの複数抽出について
 ■名前 : ゆき
 ■日付 : 02/9/7(土) 11:49
 -------------------------------------------------------------------------
   フォーム上でフィルタを使って複数条件で抽出をしたいのですが、テキストボックスや
コンポボックスなどに入力してコマンドボタンクリック時に抽出させようとするのですが
どうしても不具合がでてしまいます。

下のように場所(コンボボックス)、担当(テキストボックス)、種類(コンボボックス)
とある場合に、以下のようなプログラムだと全部あいまい抽出になるので
抽出結果がおかしくなってしまうんです。

Me.Filter = "場所 Like '" & Me!コンボ1 & "*' and
担当 Like '" & Me!txt2 & "*' and 種類 Like '" & Me!コンボ3 & "*'"

今度コンボボックスはあいまい検索をつけなくすると
抽出する条件を全部入力(?)しないと(NULL?)
1件も抽出してくれません。
またテーブルのデータでどれかひとつでも入力してない部分があっても
その物件をひろってくれません・・・
ちょっとうまくいえなくてすいません。
どうしたらうまく抽出できるのでしょうか?

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/7(土) 16:19  -------------------------------------------------------------------------
   ちょっと意味が汲み取れない部分が有るんですが
>またテーブルのデータでどれかひとつでも入力してない部分があっても
>その物件をひろってくれません・・・
?

そこで、複数条件の抽出方法と言う意味なら
こんな手は、どうでしょう

1、フォームの宣言部(フォームモジュールの先頭部分、プロシージャの前)に
この場合、3つの抽出条件なので
Private strFilStr(1 To 3) As String   '各フィールドの抽出条件
と宣言し、各添え字の番号を抽出条件に対応させます
例えば
    場所はMe!コンボ1で1
    担当はMe!txt2で2

2、フォームモジュールに以下のプロシージャを作成します
意図は1、で宣言した配列からFilter用の文字列を作成します

Private Function GetFilterString() As String

'  フィルタ抽出条件を作成

  Dim strTmp As String
  Dim i As Integer
  
  strTmp = ""
  For i = 1 To TERMS_AMT
    If strFilStr(i) <> "" Then
      If strTmp <> "" Then
        strTmp = strTmp & "And "
      End If
      strTmp = strTmp & strFilStr(i)
    End If
  Next i
  GetFilterString = strTmp
  
End Function

3、フォームモジュールに以下のプロシージャを作成します
意図は2、で作成したFilter用の文字列を実行します

Private Sub SetFormFilter()

  Dim strTmp As String
  
  strTmp = GetFilterString
  With Me
    If strTmp <> "" Then
      .Filter = strTmp
      .FilterOn = True
    Else
      .FilterOn = False
    End If
  End With
  
End Sub

4、各コントロールの変更イヴェントにより
そのコントロールの抽出条件を1、の配列に格納します
(もし、コマンドボタンを使わないならコメント部分を活かして3、のプロシージャを実行します)
例えば
Private Sub txt2_AfterUpdate()

  If txt2 <> "" Then
    strFilStr(2) = "担当 Like '" & txt2 & "*'"
  Else
    strFilStr(2) = ""
  End If
  'SetFormFilter
  
End Sub

Private Sub コンボ1_AfterUpdate()

  If コンボ1 <> "" Then
    strFilStr(1) = "場所 = '" & コンボ1 & "'"
  Else
    strFilStr(1) = ""
  End If
  'SetFormFilter
  
End Sub

5、コマンドボタンに以下のコードを作成します

Private Sub コマンド1_Click()
  
  SetFormFilter
  
End Sub

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : ゆき  ■日付 : 02/9/7(土) 17:13  -------------------------------------------------------------------------
   返事ありがとうございます^^
これをみてがんばって作ってみたいと思います。明日にでも(ぉぃ
まだよくみていないのでわからないことがでてくるかもしれないですけど(汗
(実際私が作ったのは1つのフォームに8種類あるから大変そう(><))

>ちょっと意味が汲み取れない部分が有るんですが
>またテーブルのデータでどれかひとつでも入力してない部分があっても
>その物件をひろってくれません・・・

すいません(><)わかりにくかったですね。
私が読んでてもなにかおかしかったから(汗

最初に書いたソースで抽出しようとしたときに
( Me.Filter = "場所 Like '" & Me!コンボ1 & "*' and
担当 Like '" & Me!txt2 & "*' and 種類 Like '" & Me!コンボ3 & "*'")


たとえばもとのテーブルのデータのほうに
場所:"日本"、担当:"A"、種類:"1" ⇒ 1.
場所:"日本"、担当:"A"、種類:"未記入" ⇒ 2.
と入力してあったとします。

で検索用のボックスやテキストに
場所は"日本"で担当は"A"と入力して抽出しようとしたときに
結果は1.も2.も抽出される結果がほしいのですが
なぜか1.しか抽出してくれません。
未記入が関係してると思うんですけどどうすれば
1も2も抽出してくれるのでしょうか?
必ずしもデータを全部入力するとは限らないものですから(><)

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/7(土) 18:36  -------------------------------------------------------------------------
   私の方も文章で表現するのが下手で申し訳有りません
最初に概要を説明して置けば善かったのですが
遅れ馳せながら概要を書きます
このコードで何をやっているかと言いますと
各コントロール(テクストボックス、コンボボックス)の変更が行われた場合
夫々、単体の抽出項目に対するフィルター文字列を作り、配列に格納します
この時、テクストボックスなら""(長さ0の文字列)が入力された場合、
コンボボックスのテクスト入力部に""(長さ0の文字列)が入力された場合は、
配列に""(長さ0の文字列)を格納します
私の場合はこのイヴェントの最後部分で、SetFormFilterを呼び出しますが
別のコマンドボタンでSetFormFilterを呼び出しても善いと思います
SetFormFilterが呼び出されると、GetFilterStringが配列を順に読み出し、
""で無ければAndで連結した文字列を作成し、戻り値として返してきます
帰ってきた文字列が""なら(つまり、抽出条件が何も設定されていない場合)
Me.FilterOn = Falseにしてフィルタを取り消します
また、""以外が帰った場合、その文字列をMe.Filterに代入して、
Me.FilterOn = Trueにします
つまり、抽出条件が3つ揃わなくても抽出が行われます

>で検索用のボックスやテキストに
>場所は"日本"で担当は"A"と入力して抽出しようとしたときに
>結果は1.も2.も抽出される結果がほしいのですが

上手く作れば可能です
ただ、コントロールのイヴェントは、確かAfterUpdateあたりが無難だったと思いますが
物によって、上手くいかない物が有ったような気がします
ここいら辺は試して下さい

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : ゆき  ■日付 : 02/9/9(月) 13:12  -------------------------------------------------------------------------
   Hirofumi さん大変くわしくありがとうございます^^

プログラムのやっていることはだいだいわかった(?)のですが

Private strFilstr(1 To 3)As string

をフォームの宣言部(フォームモジュールの先頭部分、プロシージャの前)
というのは
(General)の(Declarations)のところの

Option Compare Database

の下に書きこむのでしょうか?(汗

また一通り同じように作ってイベントボタンを押してもなにも変化がありません(><)
名前など間違ってもいないしプログラムも間違ってはいないと思います。
ほかになにか必要なことがあるのでしょうか。
やっぱり宣言するところが違うのかしら(汗

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/9(月) 18:51  -------------------------------------------------------------------------
   >Private strFilstr(1 To 3)As string
>
>をフォームの宣言部(フォームモジュールの先頭部分、プロシージャの前)
>というのは
>(General)の(Declarations)のところの
>
>Option Compare Database
>
>の下に書きこむのでしょうか?(汗

その通りです
DeclarationsでPrivate宣言した変数は、そのモジュールの何処からでも参照できます
因みに、Publicで宣言すれば、他のモジュールからも参照出来ます

>
>また一通り同じように作ってイベントボタンを押してもなにも変化がありません(><)
>名前など間違ってもいないしプログラムも間違ってはいないと思います。
>ほかになにか必要なことがあるのでしょうか。
>やっぱり宣言するところが違うのかしら(汗

私の方は元々、この様なコードでクラスを作り使用していますが、
ここでは、簡単にする為に書きなおしています
多分、書き忘れは無いと思いますが
もし、宜しければ、コードをUpして見て下さい
私の方でも確認して見ます
ただ、申し訳有りませんが、当方、帰宅後にしか見られない為、回答できるとしても
夜になると思います

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : ゆき  ■日付 : 02/9/9(月) 18:51  -------------------------------------------------------------------------
   Hirofumiさんのソースでそのまま使わせていただいたのですがどうしても抽出してくれません(><)
書いたソースをとりあえずそのままのっけます。

1、はじめにフォームの宣言部にはこのまま宣言しました。
Option Compare Database
Private strFilStr(1 To 3) As String

2、3 フォームモジュールにもほとんどかえずに書きました。
Private Function GetFilterString() As String
 Dim strTmp As String
 Dim i As Integer
 
  strTmp = ""
  For i = 1 To TERMS_AMT
  
    If strFilStr(i) <> "" Then
      If strTmp <> "" Then
        strTmp = strTmp & "'and"
      End If
      strTmp = strTmp & strFilStr(i)
    End If
  Next i
  GetFilterString = strTmp
 
End Function


Private Sub SetFormFilter()

  Dim strTmp As String
 
  strTmp = GetFilterString
  With Me
    If strTmp <> "" Then
      .Filter = strTmp
      .FilterOn = True
    Else
    MsgBox "みつかりませんでした。"
    
      .FilterOn = False
   End If
  End With
 End Sub

4、各コントロールの変更イベントは更新後処理に書かずに
コマンドボタンに一気に書いてみました。(これが原因かわからないのですが)

Private Sub コマンド214_Click()
If Me!コンボ166 <> "" Then
strFilStr(1) = "設置場所 ='" & Me!コンボ166 & "'"
Else
strFilStr(1) = ""
End If

If Me!cboキー <> "" Then
strFilStr(2) = "種類 = '" & Me!cboキー & "'"
Else
strFilStr(2) = ""
End If

If txt5 <> "" Then
strFilStr(3) = "担当 Like'" & Me!txt5 & "*'"
Else
strFilStr(3) = ""
End If

SetFormFilter

End Sub

これをこのまま実行すると必ず「見つかりませんでした。」とでてしまいます(><)
実際にはあるはずなのですが(汗
どこか書き方がまずいのでしょうか?(><)

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/9(月) 19:03  -------------------------------------------------------------------------
   ゴメン一箇所、間違えて書いている(私が)
>Private Function GetFilterString() As String
> Dim strTmp As String
> Dim i As Integer
> 
>  strTmp = ""
>  For i = 1 To TERMS_AMT
>  
>    If strFilStr(i) <> "" Then
>      If strTmp <> "" Then
>        strTmp = strTmp & "'and"
>      End If
>      strTmp = strTmp & strFilStr(i)
>    End If
>  Next i
>  GetFilterString = strTmp
> 
>End Function

上記のプロシージャで

For i = 1 To TERMS_AMT

と有りますが、私の元のコードでは、TERMS_AMTを定数として定義していました
このままでは、TERMS_AMTは0と見なされますのでフィルタの文字列が""で帰ってきます
TERMS_AMTの部分を3として下さい

For i = 1 To 3

此れで善いと思いますが、ゴメンナサイm(__)m

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : ゆき  ■日付 : 02/9/9(月) 19:09  -------------------------------------------------------------------------
   >For i = 1 To TERMS_AMT

>と有りますが、私の元のコードでは、TERMS_AMTを定数として定義していました
>このままでは、TERMS_AMTは0と見なされますのでフィルタの文字列が""で帰ってきます
>TERMS_AMTの部分を3として下さい
>
>For i = 1 To 3

あっ!これ私も疑問に思ってて試してみたのですが
「直前の操作はキャンセルされました。」とでてしまうんですぅ(><)

それでデバックすると

Private Sub SetFormFilter()

  Dim strTmp As String
 
  strTmp = GetFilterString
  With Me
    If strTmp <> "" Then
      .Filter = strTmp
      .FilterOn = True
    Else
    MsgBox "みつかりませんでした。"
    
      .FilterOn = False
   End If
  End With
 End Sub

の部分の
  .Filter = strTmp
に⇒がきちゃうんです(><)

 ───────────────────────────────────────  ■題名 : Re:フィルタの複数抽出について  ■名前 : ゆき  ■日付 : 02/9/9(月) 19:33  -------------------------------------------------------------------------
   つけたしなのですが
抽出するボックスに
なにも入力せずだと「みつかりませんでした。」とでるのですが

1件だけ抽出する項目になにか入力してから抽出すると
「直前の操作はキャンセルされました。」とでます。

でよく私でもわからないのですがたまにですが
いろいろ入力したりしてたとえば
2件抽出する項目をいれたら(?)
「このオブジェクトに値を代入することはできません。」とでたり
しました。
あといまやってて担当だけはうまく抽出するみたいなので
設置場所などのソースが間違っているのでしょうか?(汗

 ───────────────────────────────────────  ■題名 : Re:ばたばたしてスイマセン  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/9(月) 20:11  -------------------------------------------------------------------------
   以下の部分が違ってます
Andで連結した時にスペースが無いのと、要らない'が有るのでフィルタの文字列が不正
に成っているようです

>Private Function GetFilterString() As String
> Dim strTmp As String
> Dim i As Integer
 
>  strTmp = ""
  For i = 1 To 3
  
>    If strFilStr(i) <> "" Then
>      If strTmp <> "" Then
>        strTmp = strTmp & "'and"

        strTmp = strTmp & " And "
'Andの前の'を半角スペースにする
'(Upしたコードではありませんが、私の場合、各条件の方で調整していました)
'Andの後ろに半角スペースを追加する

>      End If
>      strTmp = strTmp & strFilStr(i)
>    End If
>  Next i
>  GetFilterString = strTmp
 
>End Function

>4、各コントロールの変更イベントは更新後処理に書かずに
>コマンドボタンに一気に書いてみました。(これが原因かわからないのですが)

各コントロールの変更イベントの法が使い善いかも?

以下の部分を変更して下さい

>Private Sub コマンド214_Click()

>  If Me!コンボ166 <> "" Then
>    strFilStr(1) = "設置場所 ='" & Me!コンボ166 & "'"

     strFilStr(1) = "(設置場所 ='" & Me!コンボ166 & "')"

'カッコを入れて下さい、無くても大丈夫だと思いますがその方が確実と思います
'また、私の場合最後の)の後ろに半角スペースを入れていました
'今回は、Andの前にスペースを入れているので、ここでは入れません

>  Else
>    strFilStr(1) = ""
>  End If

>  If Me!cboキー <> "" Then
>    strFilStr(2) = "種類 = '" & Me!cboキー & "'"

'同様に
     strFilStr(2) = "(種類 = '" & Me!cboキー & "')"

>  Else
>    strFilStr(2) = ""
>  End If

>  If txt5 <> "" Then
>    strFilStr(3) = "担当 Like'" & Me!txt5 & "*'"

'同様に
     strFilStr(3) = "(担当 Like '" & Me!txt5 & "*')"

>  Else
>    strFilStr(3) = ""
>  End If

>  SetFormFilter

>End Sub

 ───────────────────────────────────────  ■題名 : ありがとうございました^^  ■名前 : ゆき  ■日付 : 02/9/10(火) 9:21  -------------------------------------------------------------------------
   Hirofumi さん最後までお付き合いいただきありがとうございました^^
すごいくわしく教えていただき大変勉強になりました(^0^)
Hirofumiさんのご指摘どおりに直しまして見事動きました。
ひとつだけ変えたのがありましてコンポボックスは数値を選ぶのがあったので

strFilStr(1) = "(設置場所 ='" & Me!コンボ166 & "')"



strFilStr(1) = "(設置場所 =" & Me!コンボ166 & ")"

にしたら問題なく動きました^^

>>4、各コントロールの変更イベントは更新後処理に書かずに
>>コマンドボタンに一気に書いてみました。(これが原因かわからないのですが)
>
>各コントロールの変更イベントの法が使い善いかも?
>
>以下の部分を変更して下さい
>
>>Private Sub コマンド214_Click()
>
>>  If Me!コンボ166 <> "" Then
>>    strFilStr(1) = "設置場所 ='" & Me!コンボ166 & "'"
>
>     strFilStr(1) = "(設置場所 ='" & Me!コンボ166 & "')"

あと更新後処理のほうがやっぱいいですね。ただ
全部の更新後処理にIfを全種類つけないとうまく動かないですね。
私馬鹿でしたんで最初気づきませんでした(笑

もっと勉強しなきゃいけないなぁと思いました(><)

 ───────────────────────────────────────  ■題名 : Re:ありがとうございました^^  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/10(火) 19:39  -------------------------------------------------------------------------
   動いて善かったですね
私もほっとしました
色々訂正させてゴメンナサイね

尚、ちょっと気が就いた事が有りましたのでUpしときます

>たとえばもとのテーブルのデータのほうに
>場所:"日本"、担当:"A"、種類:"1" ⇒ 1.
>場所:"日本"、担当:"A"、種類:"未記入" ⇒ 2.
>と入力してあったとします。

>で検索用のボックスやテキストに
>場所は"日本"で担当は"A"と入力して抽出しようとしたときに
>結果は1.も2.も抽出される結果がほしいのですが

と有りましたが
種類:"未記入" ⇒ 2.
で、"未記入"がNull値で、"2"が入力されている物、いない物が有ると言う事でしたら
確認してないので、確実とは言い難いのですが下記の様にすれば、"2"を抽出できると思います

Private Sub cboキー_AfterUpdate()

  If cboキー <> "" Then
    If cboキー = "2" Then
      strFilStr(2) = "((種類 = '2') Or (種類 Is Null))"
    Else
      strFilStr(2) = "(種類 = '" & cboキー & "')"
    End If
  Else
    strFilStr(2) = ""
  End If

  SetFormFilter
  
End Sub

また、

>あと更新後処理のほうがやっぱいいですね。ただ
>全部の更新後処理にIfを全種類つけないとうまく動かないですね。

と有りますが、例えば、上記のcboキーのイヴェントに以下の様に
書くという意味でしたら、その必要は無いはずです
上記の用にcboキーの変更だけを書けば動くと思います
その為にDeclarationsSectionで
Private strFilstr(1 To 3)As string
を宣言しているのですから
ただ、前にも書いたと思いますが、AfterUpdateのイヴェントか
Exitのイヴェントのどちらかが(確かExitの方?)上手く動かなかったと思います

Private Sub cboキー_AfterUpdate()

  If Me!コンボ166 <> "" Then
     strFilStr(1) = "(設置場所 = " & Me!コンボ166 & ")"
  Else
    strFilStr(1) = ""
  End If

  If Me!cboキー <> "" Then
     strFilStr(2) = "(種類 = '" & Me!cboキー & "')"
  Else
    strFilStr(2) = ""
  End If

  If txt5 <> "" Then
    strFilStr(3) = "(担当 Like '" & Me!txt5 & "*')"
  Else
    strFilStr(3) = ""
  End If

  'SetFormFilter
  
End Sub

 ───────────────────────────────────────  ■題名 : Re:ありがとうございました^^  ■名前 : ゆき  ■日付 : 02/9/11(水) 11:16  -------------------------------------------------------------------------
   Hirofumi さんありがとうございます。

>Private Sub cboキー_AfterUpdate()
>
>  If cboキー <> "" Then
>    If cboキー = "2" Then
>      strFilStr(2) = "((種類 = '2') Or (種類 Is Null))"
>    Else
>      strFilStr(2) = "(種類 = '" & cboキー & "')"
>    End If
>  Else
>    strFilStr(2) = ""
>  End If
>
>  SetFormFilter
>  
>End Sub

なるほど^^こうゆう考え方もあるんですね(すごい♪

>例えば、上記のcboキーのイヴェントに以下の様に
>書くという意味でしたら、その必要は無いはずです
>上記の用にcboキーの変更だけを書けば動くと思います

>Private Sub cboキー_AfterUpdate()
>
>  If Me!コンボ166 <> "" Then
>     strFilStr(1) = "(設置場所 = " & Me!コンボ166 & ")"
>  Else
>    strFilStr(1) = ""
>  End If
>
>  If Me!cboキー <> "" Then
>     strFilStr(2) = "(種類 = '" & Me!cboキー & "')"
>  Else
>    strFilStr(2) = ""
>  End If
>
>  If txt5 <> "" Then
>    strFilStr(3) = "(担当 Like '" & Me!txt5 & "*')"
>  Else
>    strFilStr(3) = ""
>  End If
>
>  'SetFormFilter
>  
>End Sub

私の場合毎回、更新後に

SetFormFilter

をするようにしたんですよ^^
でたとえば最初は”担当”のテキストボックスに”A”と入力したら
更新後処理のイベントで”A”が抽出されますよね^^

次に”場所”のコンボボックスで”日本”と選んだら
”日本”でさらに”A”というデータが抽出されます^^

でもここで”担当”のテキストボックスの”A”を消した場合には
”日本”というデータが抽出されるようにしようとしたら

Private Sub cboキー_AfterUpdate()

  If Me!コンボ166 <> "" Then
     strFilStr(1) = "(設置場所 = " & Me!コンボ166 & ")"
  Else
    strFilStr(1) = ""
  End If

  If Me!cboキー <> "" Then
     strFilStr(2) = "(種類 = '" & Me!cboキー & "')"
  Else
    strFilStr(2) = ""
  End If

  If txt5 <> "" Then
    strFilStr(3) = "(担当 Like '" & Me!txt5 & "*')"
  Else
    strFilStr(3) = ""
  End If

  SetFormFilter
  
End Sub

とひとつの更新後処理に毎回全部書く必要ってありません?
的外れでしたらすいません(><)
あっ!説明もわかりにくいかも(汗

 ───────────────────────────────────────  ■題名 : ちょっと話がかわちゃうんですが(汗  ■名前 : ゆき  ■日付 : 02/9/11(水) 13:19  -------------------------------------------------------------------------
   ちょと話がかわっちゃうんですが、、、このフォームで抽出したものだけ
で印刷しようと思ったときにコマンドボタンに
以下の感じに作ったらうまくいきました。


Private Sub コマンド1_Click()
If Me.FilterOn = True Then
DoCmd.OpenReport "main1", acViewPreview, , Me.Filter
End If
If Me.FilterOn = False Then
DoCmd.OpenReport "main1", acViewPreview
End If

End Sub

でもこの同じフォームに並び替えをおこなえるボタンを3箇所ほど
作ったのですが、抽出したものでさらに並び替えした順番に
印刷しようと思ったら
どうすればいいのでしょうか?(><)
If文で作るには無理があるのでしょうか?(><)
並び替えのイベントは以下のプロシージャでこれが3種類ほどあります。

'昇順
Private Sub コマンド2_Click()
Me.OrderBy = "場所 ASC"
Me.OrderByOn = True

End Sub

'降順
Private Sub コマンド3_Click()
Me.OrderBy = "場所 DESC"
Me.OrderByOn = True

End Sub

ほんとに話が変わってすいません(><)

 ───────────────────────────────────────  ■題名 : Re:別のスレッドにした方が善いかも  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/11(水) 19:25  -------------------------------------------------------------------------
   >ちょと話がかわっちゃうんですが、、、このフォームで抽出したものだけ
>で印刷しようと思ったときにコマンドボタンに
>以下の感じに作ったらうまくいきました。
>
>
>Private Sub コマンド1_Click()
>If Me.FilterOn = True Then
>DoCmd.OpenReport "main1", acViewPreview, , Me.Filter
>End If
>If Me.FilterOn = False Then
>DoCmd.OpenReport "main1", acViewPreview
>End If
>
>End Sub

Private Sub コマンド1_Click()

  If Me.FilterOn = True Then
    DoCmd.OpenReport "main1", acViewPreview, , Me.Filter
  Else
    DoCmd.OpenReport "main1", acViewPreview
  End If

End Sub

この方がスッキリするかも?
本題に入りますが
私も同じ様な事をした時が有りましたが、
確か考えるのが面倒だったので、リポートのレコードソースを書き換えちゃって
誤魔化した様な覚えが有ります
この件に就いては、余り経験が有りませんので、別のスレッドにして
別の人のご意見を伺った方が言いと思いますよ

>でもこの同じフォームに並び替えをおこなえるボタンを3箇所ほど
>作ったのですが、抽出したものでさらに並び替えした順番に
>印刷しようと思ったら
>どうすればいいのでしょうか?(><)
>If文で作るには無理があるのでしょうか?(><)
>並び替えのイベントは以下のプロシージャでこれが3種類ほどあります。
>
>'昇順
>Private Sub コマンド2_Click()
>Me.OrderBy = "場所 ASC"
>Me.OrderByOn = True
>
>End Sub
>
>'降順
>Private Sub コマンド3_Click()
>Me.OrderBy = "場所 DESC"
>Me.OrderByOn = True
>
>End Sub
>
>ほんとに話が変わってすいません(><)

 ───────────────────────────────────────  ■題名 : Re:別のスレッドにした方が善いかも  ■名前 : ゆき  ■日付 : 02/9/12(木) 9:08  -------------------------------------------------------------------------
   Hirofumi さんありがとうございます^^

>Private Sub コマンド1_Click()
>
>  If Me.FilterOn = True Then
>    DoCmd.OpenReport "main1", acViewPreview, , Me.Filter
>  Else
>    DoCmd.OpenReport "main1", acViewPreview
>  End If
>
>End Sub
>
>この方がスッキリするかも?
たしかにそうですね^^ご指摘ありがとうございます^^


>本題に入りますが
>私も同じ様な事をした時が有りましたが、
>確か考えるのが面倒だったので、リポートのレコードソースを書き換えちゃって
>誤魔化した様な覚えが有ります
>この件に就いては、余り経験が有りませんので、別のスレッドにして
>別の人のご意見を伺った方が言いと思いますよ

わかりました^^新しくスレッドをたててみますね^^
最後までありがとうございます。
あ〜アクセスって奥が深い(><)

 ───────────────────────────────────────  ■題名 : Re:ありがとうございました^^  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/11(水) 19:11  -------------------------------------------------------------------------
   >私の場合毎回、更新後に
>
>SetFormFilter
>
>をするようにしたんですよ^^

私もしています

>でたとえば最初は”担当”のテキストボックスに”A”と入力したら
>更新後処理のイベントで”A”が抽出されますよね^^
>
>次に”場所”のコンボボックスで”日本”と選んだら
>”日本”でさらに”A”というデータが抽出されます^^
>
>でもここで”担当”のテキストボックスの”A”を消した場合には
>”日本”というデータが抽出されるようにしようとしたら

>とひとつの更新後処理に毎回全部書く必要ってありません?

無いと思います
なぜかと言うと、各コントロールの変更の状態は、変更された時点で
配列変数に格納されています
つまり、一々コントロールの値を読みに行きたくないので、
この様な事(更新後処理で配列に書きこむ)をしているのです
もし、不都合が出ているなら、どう言う風に出ているお教え願いますか
当方でも確認して見ますが

 ───────────────────────────────────────  ■題名 : Re:ありがとうございました^^  ■名前 : ゆき  ■日付 : 02/9/12(木) 9:15  -------------------------------------------------------------------------
   ▼Hirofumi さん:
>無いと思います
>なぜかと言うと、各コントロールの変更の状態は、変更された時点で
>配列変数に格納されています
>つまり、一々コントロールの値を読みに行きたくないので、
>この様な事(更新後処理で配列に書きこむ)をしているのです
>もし、不都合が出ているなら、どう言う風に出ているお教え願いますか
>当方でも確認して見ますが

なるほど♪
毎回一々コントロールの値を読みに行かなきゃ
だめだと勝手に勘違いしてました(><)
たしかにそうですね^^
消しても不具合なく動くことができました^^
大変失礼しました(><)

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