- - PR -
VB→VB.NET移行 データグリッドとADODB.Recordsetの連結
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-14 15:20
いつもお世話になります。 マイクロソフトの↓サイトでDataGridコントロール の.NET化についての記述があります。 http://www.microsoft.com/japan/msdn/vbasic/migration/tips/ado.aspx アップグレードウィザードを使えば変更なく移行できるとの ことですが、結局.NETのDataGridを使うにはADO.NETでデータを 取り込むしかないみたいです。とほほ 笑顔 現在.NET移行をチームで行っておりますが、ADO.NETを使わずに DataGridを使う方針でいたため痛いですねー。これは。 そこで、.NETのDataGridにADODB.Recordsetを取り入れる 方法などありますでしょうか? そういう技をご存知の方、お願いします。 また、ADO.NETを使う以外にないという有識者のご意見が ありましたらこちらもお願いしたく。 チーム全員.NET初心者なもので方針決めするのにも 一苦労です。よろしくお願いします。 サイトの内容です。アップグレードウィザードで移行されたコード↓ ========================================================================= Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load Cn = New ADODB.Connection Cn.CursorLocation = ADODB.CursorLocationEnum.adUseClient Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & VB6.GetPath & "\Test.mdb;" Cn.Open() Rs = Cn.Execute("SELECT * FROM TestTable", , ADODB.CommandTypeEnum.adCmdText) Me.DataGrid1.DataSource = Rs End Sub ========================================================================= ちなみに.NETのDataGrid1だとこのの部分でエラーになりました。 DataGrid1.DataSource = Rs やっぱり.NETのDataGrid1を使うにはこのようにDataSetを使うしかないのでしょうか。 Private dts As DataSet DataGrid1.SetDataBinding(dts, "TestTable") | ||||
|
投稿日時: 2006-01-14 15:26
自信を持って言いますが、ADO.NET テクノロジを使った方が工数的にも保守的にも絶対に良いです。
どうせ再テストは必要でしょう。 ADODB は COM オブジェクトです。 扱う場合は、参照をしっかりと解放する必要があります。 COM オブジェクトを解放する こんな実装をしたいですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-14 15:58
”じゃんぬねっと”さんありがとうございます。 ちなみにHPもよく拝見しております。 なるほどです。COM オブジェクトの解放はめんどうですね。 しかしもともとの作りがADODBに特化した実装に なっていて、ADO.NETにすると構造から変えなくては いけなくなりそうなんです。(ざっと見た感じですが) DataGrid1.DataSource = Rs 以外はうまくいっているのでなんとが構造変えだけは 避けたいんです。 | ||||
|
投稿日時: 2006-01-14 16:04
ま、Recordsetの内容をSystem.Data.DataSetに格納する。
で、そのDataSetをDataGrid.DataSourceへ、かな。 | ||||
|
投稿日時: 2006-01-14 16:26
lalupin4さん、ありがとうございます。 そういう処理ができるならうれしいです。 さっそく検討いたします。 | ||||
|
投稿日時: 2006-01-14 19:35
おつかれさまです。.NET Framework クラス ライブラリを
検索したところ下のような関数を見つけました。 Overloads Public Function Fill( _ ByVal dataTable As DataTable, _ ByVal ADODBRecordSet As Object _ ) As Integer Overloads Public Function Fill( _ ByVal dataSet As DataSet, _ ByVal ADODBRecordSet As Object, _ ByVal srcTable As String _ ) As Integer どちらかで、Datasetもしくはdatatableに 変換すればDataGridのデータソースに 格納できるかもです。 じゃんぬねっと様、lalupin4様、もし推奨する 実装方法があればご教授ください。 | ||||
|
投稿日時: 2006-01-14 20:13
変換する必要はないのではないでしょうか。 双方のオーバーロードは、充填済みの DataSet、DataTable を取得できますよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1