- 締切済み
VB6の複数検索条件で連続検索が出来ないので教えて下さい
下記のごとく、ADOデーターベースの複数アンド条件で検索をしているのですが、一番最初のレコードは検索されるのですが、次の検索をしようと思い、rs.movenextを実行しても次のレコードに飛んで検索をしてくれません。たった一度のみの検索となります。 連続検索を行いたいのですが分かりません。 どなたか、詳しい方がおられましたら宜しくお願い致します。 Public Sub Multi_find(ByRef oRs As ADODB.Recordset, sCriteria As String) Dim clone_rs As ADODB.Recordset Set clone_rs = oRs.Clone clone_rs.Filter = sCriteria If clone_rs.EOF Or clone_rs.BOF Then oRs.MoveLast oRs.MoveNext Else oRs.Bookmark = clone_rs.Bookmark End If clone_rs.Close Set clone_rs = Nothing End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- celtis
- ベストアンサー率70% (2332/3291)
If clone_rs.EOF Or clone_rs.BOF Then oRs.MoveLast oRs.MoveNext Else oRs.Bookmark = clone_rs.Bookmark End If ここの処理がいまいち良く分からないのですが、あなたが想定しているフローを言葉で説明してもらえませんか? レコードセットの中身とsCriteriaの内容も具体的に知りたいです。 また、Filter処理をした後のclone_rsに複数業の結果が入っているのかもcountなりGrid表示なりで確認してみてください。下記のサイトはAccess用ですが参考になると思います。 http://www.accessclub.jp/ado/21.html
- khazad-lefty
- ベストアンサー率44% (296/668)
clone_rs.Bookmarkを渡してもカレントレコードの位置だけしか渡されません。(フィルターは渡されない) cloneを作らずに直接oRSを操作するのがこの場合正しいかと思います。 あと、 oRs.MoveLast oRs.MoveNext と続けたら、確実にエラーになる気がするのですが…。
お礼
皆さんご回答ありがとうございました。 何とか自力で解決出来ました。 テンポラリーのBookmakを作り一旦そこにclone_rs.Bookmarkを退避し、clone_rs.Filter=sCriteriaの後、temp_Bookmarkを戻せばOKでした。 この関数は一度のみの複数条件検索しか対応していないため、頭をひねりました。これで解決しましたので一安心です。どうも有り難うございました。