DataGridに表示されているデータベースの内容をSQL文を使って並び替えたいと
思います。
strSQL = "SELECT * FROM address ORDER BY Name"
cn.Execute (strSQL)
並び替えるときってこれでよかったですよね?
そのあと、データベースを更新しないといけないみたいなのですが。。。
Set Me.DataGrid1.DataSource = rs
rs.Requery
Me.DataGrid1.Refresh
この3つを使ったのですが、どれも並び替えた状態に更新してくれません。
SQL文の書き方が悪いのでしょうか?よろしくお願いします。
SQLを使ってもテーブルのレコード位置が
物理的に変わるわけではありません。
また、Executeメソッドは選択クエリに対し
用いるものではありません。
選択クエリを発行して得られたRecordSetを
DataGridのDataSourceにセットしてください。
ただし、DBによってはクライアントカーソルでないと
正常に動作しないことがあります。
返答ありがとうございます。
>選択クエリを発行して得られたRecordSetを
>DataGridのDataSourceにセットしてください。
strSQL = "SELECT * FROM address ORDER BY Name"
Set Me.DataGrid1.DataSource = strSQL
このような感じでよろしいのでしょうか?
しかし、これを実行すると「オブジェクトが必要です。」とエラーが出てしまいます。
>ただし、DBによってはクライアントカーソルでないと
>正常に動作しないことがあります。
DBはSQLServerです。Form_Load時に
rs.CursorLocation = adUseClient
と記述してあります。これってプログラムが終了するまでずっと有効ですよね?
選択クエリを発行して得られたRecordSetを
DataGridのDataSourceにセットしてください。
追記
>strSQL = "SELECT * FROM address ORDER BY Name"
>Set Me.DataGrid1.DataSource = strSQL
「選択クエリをDataGridのDataSourceにセットしてください。」
とは書かなかったつもりですが?
追記
>strSQL = "SELECT * FROM address ORDER BY Name"
>Set Me.DataGrid1.DataSource = strSQL
「選択クエリをDataGridのDataSourceにセットしてください。」
とは書かなかったつもりですが?
すみません。勘違いをしていました。
strSQL = "SELECT * FROM address ORDER BY Name"
Set rs = cn.Execute(strSQL, , adCmdText)
Set Me.DataGrid1.DataSource = rs
と記述すればよかったのですよね?
本当にありがとうございました。