Bookmarkプロパティをソート後の順番にするには?

解決


よし  2003-06-27 18:32:46  No: 107651

ADOでrecordset.MovenextやMovepreviousでレコードを移動しながら処理
しようとしているのですが、ソート前の元アドレス(Bookmarkプロパティ)
に基づいて動くようなのです。
ソート後の順に動くようにするにはどうしたら良いのでしょうか?


よし  2003-06-28 02:32:39  No: 107652

ACCESSです。プログラムの初めにソートかけると順番は良いようなので
すが、データ書込みコマンド(update)時「クエリーが複雑すぎます。」
となってしまいます。


岡田 之仁  2003-06-28 05:20:28  No: 107653

よく内容が解らないのですが・・・
要は、SELECT文で必要なデータをテーブルから抽出する際に
どこかのフィールド情報でソーティングした結果を取得した
いと言うことだと思いますが。

では、ORDER BY 句 で、ソートしたいフィールドを指定し
て抽出した結果を取得するようにしたらOKじゃないですか?

ご確認下さい。

それから、UPDATEで、SQL文が複雑すぎる・・・とのエラー
が発生しているとのことですが、WHERE節で、右辺・左辺の値の
参照設定部分や、条件のネストで、ACCESSは確か3回層までは
許されていたと思いますが、それ以上の条件ネストを行ってし
まっているのでしょうか?

実際のプログラムや、SQL文を掲載して頂かないとなんとも
コメントのしようがありませんが・・・

以上。


よし  2003-06-30 17:21:47  No: 107654

岡田殿、ありがとうございます。
本当に初心者なため、理解不能の部分もあります。
とりあえず、処理については条件式とループを組み合わせる方法もあり
解決できそうです。
以下は、今回エラーとなった現実のソースです。
DAOまでは考えてなかた為うまくいかないのでしょう。

public sub コマンド0_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
            :
Set cn = CurrentProject.Connection
rs.CursorLocation=adUseClient
rs.Open "基テーブル",cn,adOpenkeyset,adLockOptimistic
rs.Sort="IDNO ASC,KEYRECNO ASC,SGNO ASC,INO ASC"
   '4つのフィールドIDNOからINOを優先順位でソート
rs.MoveFirst
                      :
                      :
until rs.EOF
          :
rs.Update "XXX",YYY
  'あるエリアに認識用IDの書込み、固定データ書く他パターンも有る
rs.Movenext
          :
loop
          :
rs.Close:Set rs=Nothing
cn.Close:Set cn=Nothing
End Sub


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加