みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessVBAでの事です。

こんにちは。
よろしくお願いします。
Access2000/WindowsXP にて、VBAを使いデータベースを組んでいます初心者ですー。

あるベースとなるフォーム上に、サブフォームがあり、そのサブフォームは
データシートビューで、あるテーブルを表示しています。

そのサブフォームのデータシートをどこかのフィールドをキーにして並べ替えをします。
(フィールド名の上で右クリックメニュー出して「並べ替え昇順」とかを実行)
そうするとちゃんと並べ変わります。


さてその様な状態で、VBAにて、そのサブフォームのレコードソースとなっている
テーブルをいじろうと思って、ADOのRecordSetでそのテーブルをオープンし、最初から
MoveNextでレコードを手繰っていくと、さっきフォーム上で並べ替えた順番でなく、
最初にそのテーブルを作成した順番のままで取得されてしまいます。

これを、フォーム上で並べ替えた順番でレコードセットを取得する方法というのは
ないのでしょうか?

または
今現在サブフォームのデータシートがどのような条件で並び替えがされているか
を知る方法はないでしょうか?

※どのフィールドで並び替えるかは、ユーザーのその時の操作によって不定ですので
あらかじめ並び替えのクエリーを作っておいて

  Dim cnt As New ADODB.Connection
  Dim rst As New ADODB.RecordSet

  Set cnt = CurrentProject,Connection
  rst.Open "クエリQ1", cnt, adOpenKeyset, adLockOptimistic

と、クエリーでオープンする事もできません。。

どうか、よろしくお願いいたします!!!

投稿日時 - 2003-09-25 16:33:32

QNo.664004

困ってます

質問者が選んだベストアンサー

親のフォームから見たサブフォームの名前が frmSub とすると、
frmSub.Form.OrderBy
の中に、並び替えをしたフィールド名が入っていると思います。

投稿日時 - 2003-09-26 01:44:11

補足

教えていただいた方法でプロパティが取得でき、それをそのままSortを実行すればできました!

ただ、このOrderByプロパティは、フォーム上で「並び替えの解除」を行っても最後に並び替えした内容がずっと入っているようなので、「今みたまんまの順番で」というわけには行きませんでしたぁTT

でもDAOのRecordset.Cloneでオープンすると常にフォーム上での並び順のまま取得できる事をまた他から教えていただきました!

お手数おかけしました。
ありがとうございました!!!

投稿日時 - 2003-09-26 15:30:21

お礼

さっそくのご回答ありがとうございます!

並び替えしたフィールド名が取得できるんですね。
さっそく試してみます!

ありがとうございました。

投稿日時 - 2003-09-26 11:16:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問