いつも質問させて頂いております。
いつもありがとうございます。
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
例えば、ランダムに入力されたデータベースを「部署」ごとにソートして
「名前」を読込み、コンボボックスに入れる事はできるのでしょうか?
お分かりの方がおりましたら教えて下さい
お願いします。
SQL文書いて投げたらどうでしょう?
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
> データベースの読込順序を指定したフィールド順に読み込むことは
> できるのでしょうか?
SQL文を使用する例を回答して頂いています。
> 例えば、ランダムに入力されたデータベースを「部署」ごとにソートして
SQL文で Order by が回答として書き込まれています。
> また、フィールド指定していない時は、通常、どの順序でデータベース
> を読み込む事になるのでしょうか?
通常はデザイン時の順番になるようです。しかし、この動作は保障されて
おりません。フィールドの順番を入れ替えたり、データの入れ替えを行ったり
した結果、思った通りの順番で取得できないことがあります。
そもそも、データベースにフィールドの順番とか、レコードの順番とかいう
概念はなく、各フィールド(またはレコード)は同等の立場で処理されます。
このため、フィールドの順番が重要な場合はフィールド名を指定して検索
しますし、レコードの順番が重要な場合は、並べ替えのためのフィールドを
用意し、Order by などで並べ替えて順番を保障します。
皆様の回答、ありがとうごさいます。
「初」さんの回答を読み、SQL文の勉強の為、近くの本屋さんでVB6 300技 データベース編を立ち読み??していました。帰ってきたら多数の回答ありがとうございます。「ryuryu」さんサンプルコードありがとうございます。
「特攻隊長まるるう」さんの言う通り、「思った通りの順序で取得できないことが・・・」が、今回、自分が直面した状況だったもので質問させていただきました。
「ryuryu」さんのサンプルコードを研究してみます。
ありがとうございました。
解決チェックを忘れていました。
昇順・降順・第二フィールド指定などSQL文の勉強中です。
ありがとうございました。
ツイート | ![]() |