• 締切済み

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

みんなの回答

  • celtis
  • ベストアンサー率70% (2332/3291)
回答No.2

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

回答No.1

clone_rs.Bookmarkを渡してもカレントレコードの位置だけしか渡されません。(フィルターは渡されない) cloneを作らずに直接oRSを操作するのがこの場合正しいかと思います。 あと、 oRs.MoveLast oRs.MoveNext と続けたら、確実にエラーになる気がするのですが…。

robotanmarch
質問者

お礼

皆さんご回答ありがとうございました。 何とか自力で解決出来ました。 テンポラリーのBookmakを作り一旦そこにclone_rs.Bookmarkを退避し、clone_rs.Filter=sCriteriaの後、temp_Bookmarkを戻せばOKでした。 この関数は一度のみの複数条件検索しか対応していないため、頭をひねりました。これで解決しましたので一安心です。どうも有り難うございました。

関連するQ&A