Page 268 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼テーブル(key付き)をVBから昇順r... むらら 03/5/8(木) 9:41 ┗Re:使用時に指定する イケガミ 03/5/8(木) 12:26 ┗Re:使用時に指定する むらら 03/5/8(木) 15:08 ┗Re:使用時に指定する イケガミ 03/5/8(木) 16:58 ┗Re:使用時に指定する むらら 03/5/9(金) 14:00 ┗Re:使用時に指定する イケガミ 03/5/10(土) 3:07 ─────────────────────────────────────── ■題名 : テーブル(key付き)をVBから昇順r... ■名前 : むらら ■日付 : 03/5/8(木) 9:41 -------------------------------------------------------------------------
教えてください。 社内で、ACCESSの開発をしているのが私一人なもので だれに聞く事もできずに、困っています。 現在、データ蓄積用にテーブルがあり、それにはKEY(日付)で昇順としています。直接テーブルを開くと、KEYが効いていて、昇順に並んで見えるのですが、リスト印刷のVB(下記)でMoveFirst から MoveNextで、順番に見るように指定しても、結果のリストを見るとKEY無しの状態のテーブルで(入力順のような気がします)読んでいます。 If F_TBL.BOF = False Then F_TBL.MoveFirst End If On Error Resume Next Do Until F_TBL.EOF = True If Format(F_TBL!日付, "YYYY/MM") = Format(Me!月入力, "YYYY/MM") Then ' 省略 ’ F_TBL.MoveNext Loop 一応私の無い頭で考えた案は。。。 追加クエリーを作って、日付の昇順で排出し、そのクエリーで作ったテーブルを上と同じロジックでリスト出力の元データとすると、上手く動きました。この方法で、追加クエリーとその出力テーブルをリスト分作るとすると、かなりの量を作らないといけないので、ちょっと困ってます。 ??? テーブルにKEY設定がしてあれば、VBでも、KEY順で昇順に読むことが簡単にできる方法があるような気がしています。 どなたか、こんなつたない説明で分かるかとても心配ですが、 とにかく、業務が滞ってしまってます。 とにかく助けてください。教えてください よろしくお願いします。 |
基本的にデータベースソフトでは、並び順は保証されません。 使うときに、必要な順序を指定する必要があります。 なので、OpenRecordset などでは直接テーブルを指定せずに、 並べ替えの指定をしたクエリや、SQL文を使ってレコードセットを 開くようにすればいいと思います。 |
回答ありがとうございました。 やはり、並び順はだめなんですよね。 クエリは、作るべき数が多くて大変で、 VBの記述も変更しなくてはいけないので 修正工数の少ないSQLでしてみたいと思います。 OpenRecordsetは、使っていましたが、 いつも、下記の記述で、テーブル名だけ 変更して使っていました。 SQL文を使ったことなど無かったのですが、 今回頑張ってみたいと思います。 もし、良かったら、下記の内容を確認してやってください。 <<今までの記述>> Set F_TBL = CurrentDb.OpenRecordset("T.高速艇日報", DB_OPEN_TABLE) <<SQLを使った記述>> ↓ Set F_TBL = CurrentDb.OpenRecordset("SELECT * FROM T.高速艇日報 ORDER BY 日付") イケガミさんのおっしゃる記述はこのような事でよいのでしょうか? すみません、ありがとうございます。といいながら、また質問してしまいました。 |
><<SQLを使った記述>> > ↓ >Set F_TBL = CurrentDb.OpenRecordset("SELECT * FROM T.高速艇日報 ORDER BY 日付") >おっしゃる記述はこのような事でよいのでしょうか? はい。そのとおりです。 と補足ですが。。 テーブルタイプ(dbOpenTable)でしたら Index プロパティ を使っても 大丈夫ですね。 ダイナセット・スナップショットタイプでしたら Sort プロパティ を 使うことができます。 ただし、ヘルプにも以下のような記述がありますので、テーブルタイプ以外で あれば、SQL文を使った方がいいでしょうね。 (Acc2000・Sort プロパティのヘルプより抜粋) ----------------------------------------------------------------------- メモ 通常は、並べ替え条件を指定した SQL ステートメントを使用して 新しい Recordset オブジェクトを開いたほうが、並べ替えが速く行われます。 ----------------------------------------------------------------------- |
重ね重ね、ご丁寧にありがとうございました。 私の職場は,Accessでの開発は誰もしていなくて、 パソコンでは、Excel止まりで、みんな今の時代にCOBOLなんです。 信じられないでしょ。 私自身も、COBOLしか知らず、一人で、Accessと格闘中です。 こんな環境なので、本当にこういう場があって、 また、即答してくださる方がいて、 本当に助けられています。 今後も、機会があるかもしれませんが、よろしくお願いします。 今回は、本当にお世話になりました。大変、勉強になりました。 |
>私の職場は,Accessでの開発は誰もしていなくて、 >パソコンでは、Excel止まりで、みんな今の時代にCOBOLなんです。 >信じられないでしょ。 いえいえ。似たようなものです(うちの職場でも) 少しずつAccessを使わないといけないように洗脳してます(笑) で、ちょっと気になった点を。 DB_OPEN_TABLE ←の書き方は、古いバージョンのものだと思います。 互換性のために今も使えはするのでしょうが、dbOpenTable のように 記述した方がいいと思います。 |