DataGridの並び替え


TOTO  2002-07-17 14:08:20  No: 104533  IP: [192.*.*.*]

DataGridに表示されているデータベースの内容をSQL文を使って並び替えたいと
思います。

        strSQL = "SELECT * FROM address ORDER BY Name"
        cn.Execute (strSQL)

並び替えるときってこれでよかったですよね?
そのあと、データベースを更新しないといけないみたいなのですが。。。

        Set Me.DataGrid1.DataSource = rs
        rs.Requery
        Me.DataGrid1.Refresh

この3つを使ったのですが、どれも並び替えた状態に更新してくれません。
SQL文の書き方が悪いのでしょうか?よろしくお願いします。

編集 削除
Say  2002-07-17 16:58:02  No: 104534  IP: [192.*.*.*]

SQLを使ってもテーブルのレコード位置が
物理的に変わるわけではありません。

また、Executeメソッドは選択クエリに対し
用いるものではありません。

選択クエリを発行して得られたRecordSetを
DataGridのDataSourceにセットしてください。

ただし、DBによってはクライアントカーソルでないと
正常に動作しないことがあります。

編集 削除
TOTO  2002-07-17 17:27:51  No: 104535  IP: [192.*.*.*]

返答ありがとうございます。

>選択クエリを発行して得られたRecordSetを
>DataGridのDataSourceにセットしてください。

        strSQL = "SELECT * FROM address ORDER BY Name"
        Set Me.DataGrid1.DataSource = strSQL

このような感じでよろしいのでしょうか?
しかし、これを実行すると「オブジェクトが必要です。」とエラーが出てしまいます。

>ただし、DBによってはクライアントカーソルでないと
>正常に動作しないことがあります。

DBはSQLServerです。Form_Load時に

        rs.CursorLocation = adUseClient
と記述してあります。これってプログラムが終了するまでずっと有効ですよね?

編集 削除
Say  2002-07-17 17:36:09  No: 104536  IP: [192.*.*.*]

選択クエリを発行して得られたRecordSetを
DataGridのDataSourceにセットしてください。

編集 削除
Say  2002-07-17 17:41:22  No: 104537  IP: [192.*.*.*]

追記
>strSQL = "SELECT * FROM address ORDER BY Name"
>Set Me.DataGrid1.DataSource = strSQL

「選択クエリをDataGridのDataSourceにセットしてください。」
とは書かなかったつもりですが?

編集 削除
Say  2002-07-17 17:42:17  No: 104538  IP: [192.*.*.*]

追記
>strSQL = "SELECT * FROM address ORDER BY Name"
>Set Me.DataGrid1.DataSource = strSQL

「選択クエリをDataGridのDataSourceにセットしてください。」
とは書かなかったつもりですが?

編集 削除
TOTO  2002-07-17 18:09:55  No: 104539  IP: [192.*.*.*]

すみません。勘違いをしていました。

        strSQL = "SELECT * FROM address ORDER BY Name"
        Set rs = cn.Execute(strSQL, , adCmdText)
        Set Me.DataGrid1.DataSource = rs

と記述すればよかったのですよね?
本当にありがとうございました。

編集 削除