すいません。先ほどのNOTHINGですが、もう1つ質問があります。
ADOとSQLを使って、IDの並べ替えをしたいのですが、ピクリとも
反応しません。何がいけないのでしょうか?どうか何方か教えて下さい。
本当に2度もすみません。^v^;
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public dbFile, dbTable, strSQL As String
Const CONNECT_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = "
Const SQL_STRING = "SELECT * FROM"
'-----------------------------------------------
Private Sub ID並替ボタン_Click()
dbFile = CONNECT_STRING & App.Path & "\ID表.mdb" & ";" & _
"Jet OLEDB:Database Password=???;" & "Mode=Read"
cn.ConnectionString = dbFile
cn.Open
strSQL = "Select ID, 役職部門名, 名字 , パスワード " _
& " From IDTABLE " & " Order By ID Desc"
Set rs = cn.Execute(strSQL)
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End sub
・対象データベースファイル名:ID表.mdb
・テーブル名:IDTABLE
・フィールド名:ID(001などの3桁),役職部門名,名字,パスワード
*インデックスは作成したくないのですが、駄目でしょうか?
selectはデータを取得するために使うものなので これをDBにExecuteしても意味ないです。
もちろん、このSQL文で取得したRecordSetはちゃんとソートされてますが。
このmdb上のデータを並べ替えることにどれほどの意味があるのか分かりませんが、
普通IDというものはキーになってる必要があると思います。
そしてキーを設定しておけば普通はキー順にソートされると思いますが。
nanashiさん、回答ありがとうございました。
キー設定でMDBファイルのソートは上手くいきました。
ただ実を申しますと、この後にこのデータをテーブル(MS FlexGrid)に展開
しているのですが、こちらの方は全く変わりません。
なぜ?でしょう?悪いところがあれば教えて下さい。m__m
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public dbFile, dbTable, strSQL As String
Const CONNECT_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = "
Const SQL_STRING = "SELECT * FROM"
'-----------------------------------------------
Sub 更新()
dbFile = CONNECT_STRING & App.Path & "\ID表.mdb" & ";" & _
"Jet OLEDB:Database Password=???;"
cn.ConnectionString = dbFile
cn.Open
dbTable = "SELECT * FROM " & "IDTABLE"
rs.Open dbTable, dbFile, adOpenStatic, adLockReadOnly
rsStr = rs.GetString(adClipString, rs.RecordCount)
With IDウインドウ.IDグリッド
.FixedCols = 0
.Cols = rs.Fields.Count
.Rows = rs.RecordCount + 1
'列名の表示
For i = 0 To rs.Fields.Count - 1
.TextMatrix(0, i) = rs.Fields(i).Name
.ColAlignment(i) = 4
Next
'データの表示
.col = 0
.Row = 1
.ColSel = .Cols - 1
.RowSel = .Rows - 1
.Clip = rsStr
'選択範囲の解除
.RowSel = .Row
.ColSel = .col
End With
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
フォーム名:IDウインドウ , MSFlexGrid名:IDグリッド
(キー設定はしましたが、インデックスはなしのままです)
うーん、よく分かりませんが(^^;
とりあえずRecordSet取得時に order by を使ってみては?
ほっ、できました。(*^u^*)
さすが、nanashiさん。アドバイスのお陰で下記のように「Order By」
の↓に書き込んだらできました。
strSQL = "Select ID, 役職部門名, 名字 , パスワード " _
& " From IDTABLE " & " Order By ID Desc"
Set rs = cn.Execute(strSQL)
N = 1
With rs
.MoveFirst
Do While Not .EOF
With IDウインドウ.IDグリッド
.TextMatrix(N, 0) = rs![ID]
.TextMatrix(N, 1) = rs![役職部門名]
.TextMatrix(N, 2) = rs![名字]
.TextMatrix(N, 3) = rs![パスワード]
End With
N = N + 1
.MoveNext
Loop
End With
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
'-----------------------------
結局、キー設定と更新の書き方がマズカッタみたいです。
nanashiさん、今後ともよろしくお願いします。m_ _m
ありがとうございました。
ツイート | ![]() |