Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1805 / 2272 ツリー ←次へ | 前へ→

【5146】フィルタープロパティーでの抽出(複数条件) しん 05/5/29(日) 10:58 質問[未読]
【5148】Re:フィルタープロパティーでの抽出(複数... 小僧 05/5/29(日) 11:35 回答[未読]
【5149】Re:フィルタープロパティーでの抽出(複数... しん 05/5/29(日) 18:44 質問[未読]
【5151】Re:フィルタープロパティーでの抽出(複数... 小僧 05/5/30(月) 9:38 回答[未読]
【5166】Re:フィルタープロパティーでの抽出(複数... しん 05/5/30(月) 21:30 お礼[未読]
【5167】Re:フィルタープロパティーでの抽出(複数... たん 05/5/31(火) 10:54 発言[未読]
【5207】Re:フィルタープロパティーでの抽出(複数... しん 05/6/2(木) 8:05 お礼[未読]

【5146】フィルタープロパティーでの抽出(複数条...
質問  しん  - 05/5/29(日) 10:58 -

引用なし
パスワード
   フィルタープロパティーを使用し抽出しようと考えてるのですが、コンパイルエラーが出てしまいます。フォーム上でのテキストボックスの値と、ツリービューのノードオブジェクトのKey(変数ss)、2つの条件で抽出しようと考えてます。

書き方が悪いとは思うのですがよく分かりません。
Me!で始まる最初の文の "=" 以降でエラーが発生します。
ご指摘の程よろしくお願いいたします。


Private Sub cmd検索2_Click()
  
Dim ss As Integer

ss = Mid(ActiveX7.SelectedItem.Key, 3)
  
Me!サブフォーム1.Form.Filter = "("Key=" & ss) and ("タイトル Like '*" & Me!txt検索 & "*'")"
Me!サブフォーム1.Form.FilterOn = True
  
End Sub

【5148】Re:フィルタープロパティーでの抽出(複数...
回答  小僧  - 05/5/29(日) 11:35 -

引用なし
パスワード
   ▼しん さん:
こんにちは。
フィルタを掛ける対象のフィールド名が「Key」「タイトル」で宜しければ、
  
>Me!サブフォーム1.Form.Filter = "("Key=" & ss) and ("タイトル Like '*" & Me!txt検索 & "*'")"

Me!サブフォーム1.Form.Filter = _
      "[Key] = " & ss & "AND [タイトル] Like '*" & Me!txt検索 & "*'"

でいかがでしょうか?

【5149】Re:フィルタープロパティーでの抽出(複数...
質問  しん  - 05/5/29(日) 18:44 -

引用なし
パスワード
   ▼小僧さま
こんにちは。さっそくのご返答ありがとうございます。
返答いただいた内容でうまくいきました。ありがとうございました。

ついでのお願いですが、結局私は ()、""、''、等の使い方がよく理解できていないということなのだと思うのですが、1.今回の失敗は何がいけないのか?2.VBAを使う上での基本的な、""等のルールについて教えていただければと思います。

1.はともかく、2.は本をよく読め!といったことになるかもしれませんが、後学の為にもよろしくお願いします。

【5151】Re:フィルタープロパティーでの抽出(複数...
回答  小僧  - 05/5/30(月) 9:38 -

引用なし
パスワード
   ▼しん さん:
おはようございます。

>2.VBAを使う上での基本的な、""等のルール

VBAで変数に
文字列を代入する時は「"」で(「"」の中だった場合は「'」で)
数字を代入する時はそのまま
日付を代入する時は「#」で
くくります。

>>(例)
>>Dim MOJI1 As String
>>Dim MOJI2 As String
>>Dim SUJI As Long
>>Dim HIDUKE As Date
>>
>>MOJI1 = "あいうえお"
>>MOJI2 = "あい = 'うえお'"
>>SUJI = 123
>>HIDUKE = #5/30/2005#

今回の例では「Me!サブフォーム1.Form.Filter」の右辺に文字列として

Key = 1 AND タイトル Like "*あ*"

の様な式を作成したいですよね。

文字列なので全体を「"」で括ります。内側の「"」は「'」になります
> "Key = 1 AND タイトル Like '*あ*'"

解りやすくするために、フィールド名を「[]」で括ります。
> "[Key] = 1 AND [タイトル] Like '*あ*'"

Key の値を変数 ss に置き換える為に「"」の外に出します。
文字列の連結は「&」にて行います。
> "[Key] = " & ss & " AND [タイトル] Like '*あ*'"

タイトル の値もフォームの値にするために「"」の外に出します。
> "[Key] = " & ss & " AND [タイトル] Like '*" & Me!txt検索 & "*'"

このような感じでフィルタ条件の式ができます。
1つ1つ考えていくとさほど難しくないと思われますがいかがでしょうか?

【5166】Re:フィルタープロパティーでの抽出(複数...
お礼  しん  - 05/5/30(月) 21:30 -

引用なし
パスワード
   ▼小僧 さま
丁寧な解説ありがとうございました。
順をおって説明いただくと良く分かりました。
これで今後間違いの数が減ってくれればと思います。
ありがとうございました。

【5167】Re:フィルタープロパティーでの抽出(複数...
発言  たん  - 05/5/31(火) 10:54 -

引用なし
パスワード
   横から失礼。

ヘルプで「クォーテーション」で検索して、
クォーテーションの使い方をきちんと確認
しましょう。

# 読みにくいけど、ヘルプ読みましょう。
# 必要な情報はきちんとそろっているのです。

【5207】Re:フィルタープロパティーでの抽出(複数...
お礼  しん  - 05/6/2(木) 8:05 -

引用なし
パスワード
   たん さん
厳しいご指摘ありがとうございます。
書物等でも勉強するのですが、なかなか。
複数組み合わさってくるとよく分からなくなるのですよ。
””、&、*、''、etc・・・
勉強します。

1805 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078263
(SS)C-BOARD v3.8 is Free