データベース読込の順序を変更するには?

解決


かつのり  2007-05-23 23:08:11  No: 136474

いつも質問させて頂いております。
いつもありがとうございます。

Accessデータベースを読み込んでコンボボックスに入れているのですが、
データベースの読込順序を指定したフィールド順に読み込むことは
できるのでしょうか?
また、フィールド指定していない時は、通常、どの順序でデータベース
を読み込む事になるのでしょうか?

今は下記コードの様にしてデータベースを読込んでおります。

    s_id.Clear 'コンボボックスをクリア
    s_name.Clear 'コンボボックスをクリア
    s_busho.Clear 'コンボボックスをクリア
    Set mDb = OpenDatabase("D:\ABC\123.mdb")
    Set mRs = mDb.OpenRecordset("meibo", dbOpenTable)
    Do Until mRs.EOF
        On Error Resume Next
        s_ID = mRs.Fields("ID")
        shokuin = mRs.Fields("名前")
        busho = mRs.Fields("部署")

        s_id.AddItem s_ID
        s_name.AddItem shokuin
        s_busho.AddItem busho

        s_ID = ""
        shokuin = ""
        busho = ""
        mRs.MoveNext
    Loop
    mRs.Close
    mDb.Close
    Set mRs = Nothing
    Set mDb = Nothing

例えば、ランダムに入力されたデータベースを「部署」ごとにソートして
「名前」を読込み、コンボボックスに入れる事はできるのでしょうか?

お分かりの方がおりましたら教えて下さい
お願いします。


  2007-05-24 00:43:36  No: 136475

SQL文書いて投げたらどうでしょう?


ryuryu  2007-05-24 00:56:17  No: 136476

SQL文を発行してみてはいかがですか?
Dim strSQL As String

s_id.Clear 'コンボボックスをクリア
s_name.Clear 'コンボボックスをクリア
s_busho.Clear 'コンボボックスをクリア
Set mDb = OpenDatabase("D:\ABC\123.mdb")

strSQL = "Select * From meibo Order by 部署 DESC;"
Set mRs = mDb.OpenRecordSet(strSQL, dbOpenDynaset)

Do Until mRs.EOF
    On Error Resume Next
    s_ID = mRs.Fields("ID")
    shokuin = mRs.Fields("名前")
    busho = mRs.Fields("部署")
    s_id.AddItem s_ID
    s_name.AddItem shokuin
    s_busho.AddItem busho

    s_ID = ""
    shokuin = ""
    busho = ""
    mRs.MoveNext
Loop
mRs.Close
mDb.Close
Set mRs = Nothing
Set mDb = Nothing


特攻隊長まるるう  2007-05-24 01:18:24  No: 136477

> データベースの読込順序を指定したフィールド順に読み込むことは
> できるのでしょうか?
SQL文を使用する例を回答して頂いています。

> 例えば、ランダムに入力されたデータベースを「部署」ごとにソートして
SQL文で Order by が回答として書き込まれています。

> また、フィールド指定していない時は、通常、どの順序でデータベース
> を読み込む事になるのでしょうか?
通常はデザイン時の順番になるようです。しかし、この動作は保障されて
おりません。フィールドの順番を入れ替えたり、データの入れ替えを行ったり
した結果、思った通りの順番で取得できないことがあります。

そもそも、データベースにフィールドの順番とか、レコードの順番とかいう
概念はなく、各フィールド(またはレコード)は同等の立場で処理されます。
このため、フィールドの順番が重要な場合はフィールド名を指定して検索
しますし、レコードの順番が重要な場合は、並べ替えのためのフィールドを
用意し、Order by などで並べ替えて順番を保障します。


かつのり  2007-05-24 01:45:12  No: 136478

皆様の回答、ありがとうごさいます。
「初」さんの回答を読み、SQL文の勉強の為、近くの本屋さんでVB6 300技 データベース編を立ち読み??していました。帰ってきたら多数の回答ありがとうございます。「ryuryu」さんサンプルコードありがとうございます。
「特攻隊長まるるう」さんの言う通り、「思った通りの順序で取得できないことが・・・」が、今回、自分が直面した状況だったもので質問させていただきました。
「ryuryu」さんのサンプルコードを研究してみます。

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


かつのり  2007-05-24 18:55:36  No: 136479

解決チェックを忘れていました。
昇順・降順・第二フィールド指定などSQL文の勉強中です。
ありがとうございました。


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

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






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