- ベストアンサー
DAOのrs.Filter =の使い方
Q_CCというクエリーのフィールドにIDがあります。 あるフォームのボタンのイベントプロシージャに Set db = CurrentDb() Set rs = db.OpenRecordset("Q_CC", dbOpenDynaset) rs.Filter = "ID = 'Me.メールID'" としましたけど、フィルターが働いてくれません。 " と ' の使い方がまずいと思います。 私のフォームに「メールID」というものが関連づけられていて、 このメールIDという値はMe.メールIDで求められますが、 このメールIDと同じ値のQ_CCのIDで、Q_CCにフィルタかけたい のです。 rs.Filter = "ID =" + Me.メールID としたらエラーです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
多分、 ID=" & Nz(Me.ID, 0) としていないことが原因です。 が、素直に、Where節を書いても事足りるのでは・・・。 Private Sub コマンド0_Click() Dim dbsCurrent As dao.Database Dim rstTest As dao.Recordset Dim strQuerySQL As String strQuerySQL = "SELECT * FROM A_Query WHERE ID=" & Nz(Me.ID, 0) Set dbsCurrent = CurrentDb Set rstTest = dbsCurrent.OpenRecordset(strQuerySQL) With rstTest Do Until .EOF Debug.Print .Fields(0) .MoveNext Loop End With rstTest.Close dbsCurrent.Close End Sub
その他の回答 (1)
- bonaron
- ベストアンサー率64% (482/745)
IDフィールドがテキスト型なら rs.Filter = "ID = '" & Me.メールID & "'" 数値型なら rs.Filter = "ID =" & Me.メールID この場合は、Me.メールID のNULL チェックが必要です。 ただし、自分が作る場合は No1さんの方法にします。 Filter にカーソルをあて、F1キーを押して ヘルプを表示すると、その理由が書かれています。
お礼
bonaronさん 早速の回答ありがとうございます。 NULLチェックですね。ヘルプをよく読んでおきます。 すみませんでした。
お礼
s_huskyさん 早速の回答ありがとうございます。 Nzでしたか。気づきませんでした。ありがとう。 また、この例文もありがとうございます。 使ってみます。 本日は、この結果を報告できませんが、明日に報告させて頂きます。よろしくお願いします。
補足
遅くなりました。検証してみました。 本当に、わざわざフィルターしなくてもWhere節にしたらいいという意味がよく分かりました。それと、Nz関数で解決出来ました。ありがとうございます。 助かりました。