DataGridの並び替え


TOTO  2002-07-17 23:08:20  No: 104533

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-18 01:58:02  No: 104534

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

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

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

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


TOTO  2002-07-18 02:27:51  No: 104535

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

>選択クエリを発行して得られた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-18 02:36:09  No: 104536

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


Say  2002-07-18 02:41:22  No: 104537

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

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


Say  2002-07-18 02:42:17  No: 104538

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

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


TOTO  2002-07-18 03:09:55  No: 104539

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

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

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


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

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






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