アプリ版:「スタンプのみでお礼する」機能のリリースについて

Private Sub 検索_Click()

Dim strFilter1 As String
Dim strFilter2 As String
Dim strFilter3 As String

strFilter1 = "学校名 = '" & 学校名1 & "'"
strFilter2 = "学校区分 = '" & 学校区分1 & "'"
strFilter3 = "キャンパス = '" & キャンパス1 & "'"
Me.Filter = strFilter1 & " or " & strFilter2 & " or " & strFilter3


Me.FilterOn = True

End Sub


(1)学校名・(2)学校区分・(3)キャンパスと3つのテキストボックスがあり
3つの抽出条件を満たすレコードをフォームに表示させたいのですが
学校名を仮に早稲田大学といれ絞れるのですが次に学校区分を大学
と入れるとほか大学も抽出されてしまいます。

学校名を抽出させたら、その範囲で学校区分の大学を抽出させたいのですが
どのようにすればいいのでしょうか?
(1)のみの抽出の場合や(1)と(2)のみの
場合があるのでandの完全一致ではありません。

A 回答 (8件)

わかった。



フォームモジュールの先頭
Option Compare Database
の次の行に
Option Explicit

これで分かるでしょう。
    • good
    • 0
この回答へのお礼

bonaronさん
Option Explicitをつけたら、実行できるようになりました!
ありがとうございます。
ただ、当初質問した条件通りには抽出できませんでした。。
hatenaさん細かくありがとうございました。

お礼日時:2010/12/15 11:24

No6 です。


To hatena さん
失礼しました。
大丈夫ですね。
    • good
    • 0

hatena さん お疲れのようですね。



>> 何もイミディエイトウィンドウには記載はありませんでした。。

>  If 学校名1 <> "" Then

Null チェック が必要かと。 ^^;
    • good
    • 0

> 何もイミディエイトウィンドウには記載はありませんでした。



それでは、下記の手順を試してください。

フォームをデザインビューで開き、「検索」コマンドボタンの「クリック時」プロパティに、[イベント プロシージャ] と設定されている確認。

設定されていたら、右端のビルドボタンをクリックして、VBAウィンドウが開き、Private Sub 検索_Click() のコードが表示されるか確認。

表示されたら、下記のように MsgBox のコードを挿入。


Private Sub 検索_Click()

  Dim strFilter As String

MsgBox "検索_Click!"
  If 学校名1 <> "" Then
    strFilter = " And 学校名 = '" & 学校名1 & "'"
  End if
  If 学校区分1 <> "" Then
    strFilter = strFilter & " And 学校区分 = '" & 学校区分1 & "'"
  End If
  If キャンパス <> "" Then
    strFilter = strFilter & " And キャンパス = '" & キャンパス1 & "'"
  End If

MsgBox "strFilter='" & strFilter & "'"

  Me.Filter = Mid(strFilter1, 6)
  Me.FilterOn = (strFilter <> "")

End Sub

フォームビューにして、学校名1、学校区分1、キャンパス1 に何か入力して、
検索ボタンをクリック。

MsgBox 2回表示されるか確認。

表示されるなら、表示された内容を押して得てください。
    • good
    • 1
この回答へのお礼

<フォームをデザインビューで開き、「検索」コマンドボタンの「クリック時」プロパティに、[イベント プロシージャ] と設定されている確認。
<設定されていたら、右端のビルドボタンをクリックして、VBAウィンドウが開き、Private Sub 検索_Click() のコードが表示されるか確認。
↑こちら確認済みです。詳細な説明ありがとうございます。

そして標記のコードを貼り付け実行させ、2回ほどメッセージがでたので
2回クリックしましたが、実行結果はテキストボックスに入れた内容で抽出されず
何も変化はありませんでした。。

m3_maki さんもNo7で仰られているように実行には問題ないみたいですね。。
う。。何がいけないのでしょうか。。

お礼日時:2010/12/15 02:14

> いわれた通りデバックからコードを貼り付けてみました。



それでは、そのフォームを開いて、検索ボタンを押してから、
キーボードの Ctrl + G を押してください。
VBAウィンドウが開きまずので、そこのイミディエイトウィンドウに
何か表示されてますか。
表示されていたら、それをコピーしてこの掲示板に貼り付けてください。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
何もイミディエイトウィンドウには記載はありませんでした。。

お礼日時:2010/12/14 09:37

前回の回答のコードにタイプミスがありましたので、下記に修正してください。



Private Sub 検索_Click()

  Dim strFilter As String


  If 学校名1 <> "" Then
    strFilter = " And 学校名 = '" & 学校名1 & "'"
  End if
  If 学校区分1 <> "" Then
    strFilter = strFilter & " And 学校区分 = '" & 学校区分1 & "'"
  End If
  If キャンパス <> "" Then
    strFilter = strFilter & " And キャンパス = '" & キャンパス1 & "'"
  End If

  Me.Filter = Mid(strFilter1, 6)
  Me.FilterOn = (strFilter <> "")

End Sub


これで、うまくフィルタが掛からない場合は、上記の、End Sub の前に、

Debug.Print Me.Filter

というデバック用コードを挿入して実行してみてください。
検索ボタンをクリックした後、Ctrl+G でイミディエイトウィンドウを表示させ、そこに表示された文字列をコピーしてここに貼り付けてもらえますか。
    • good
    • 0
この回答へのお礼

hatena1989さん、返信ありがとうございます。
とりあえず、再度実行してみたのですが動きません。
いわれた通りデバックからコードを貼り付けてみました。

Private Sub 検索_Click()


Dim strFilter As String


If 学校名1 <> "" Then
strFilter = " And 学校名 = '" & 学校名1 & "'"
End If
If 学校区分1 <> "" Then
strFilter = strFilter & " And 学校区分 = '" & 学校区分1 & "'"
End If
If キャンパス <> "" Then
strFilter = strFilter & " And キャンパス = '" & キャンパス1 & "'"
End If

Me.Filter = Mid(strFilter1, 6)
Me.FilterOn = (strFilter <> "")



'Me.FilterOn = True
Debug.Print Me.Filter


End Sub

お礼日時:2010/12/13 18:59

> (1)のみの抽出の場合や(1)と(2)のみの


> 場合があるのでandの完全一致ではありません。

Or条件でもないですね。
And 条件の場合分けでしょうね。

下記のコードでいかがですか。

Private Sub 検索_Click()

Dim strFilter As String


If 学校名1 <> "" Then
strFilter = " And 学校名 = '" & 学校名1 & "'"Eend if
If 学校区分1 <> "" Then
strFilter = strFilter & " And 学校区分 = '" & 学校区分1 & "'"
End If
If キャンパス <> "" Then
strFilter = strFilter & " And キャンパス = '" & キャンパス1 & "'"
End If

Me.Filter = Mid(strFilter1,5)
Me.FilterOn = (strFilter <> "")

End Sub
    • good
    • 0
この回答へのお礼

hatena1989 さん
ご回答ありがとうございます。
プログラムの内容は大まかには理解できたのですが
ボタンをクリックしても何も抽出されません。

お礼日時:2010/12/13 02:39

要求する仕様が良く分からないのです。


「早稲田」or「大学」で、他の大学が出てくるのは当然だと思いますし、それが「学校名を抽出させたら、その範囲で学校区分の大学を抽出させたい」という仕様ではないのですか?
なんで「大学」という範囲のレコードを抽出するのに、「早稲田大学」も一緒に抽出条件する場合があるのかはよく分かりませんが。

また、厳密に言うと「その範囲で学校区分の大学」もよく意味が分かりません。こんな掲示板に書いているのですから、別にきっちりかっちり書けといっているわけではありません。ただ、要求する動作がきちんと定義されていないのではないか、という印象をもちました。
フィルターの使い方という話ではなくて、そもそもデータベースの設計、というかデータの整理の仕方、運用の仕方に問題があるのではないですか?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています