- 締切済み
vb ado → vb2005 ado.net変換
お世話になります。初めて投稿させていただきます。 VB6.0で下記のようなコードでコンボボックスcboMakerへフィールド値を格納しているのですがこのコードをVB2005のado.netで記述したいのですが可能でしょうか?可能であればどのようなコードを書けばよいのでしょうか。フィールドの値を1レコードづつ取得することは可能なのでしょうか? 初心者ですみません。宜しくお願いします。 Dim con As ADODB.Connection Dim rec As ADODB.Recordset Dim sql As String Dim recCnt As Long con = New ADODB.Connection con.ConnectionString "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & パス con.Open() rec = New ADODB.Recordset sql = "SELECT * FROM " & テーブル名 rec.Open(sql, con, adOpenStatic, adLockReadOnly) If rec.RecordCount < 1 Then 'レコードが存在しない MsgBox("未登録です。", G_MB_CAUTION, G_SYSTEM_NAME) Exit Function Else ReDim CboMakerId(rec.RecordCount) End If 'コンボボックスに値を挿入 ※「.List(recCnt)」から値を挿入する With Me.cboMaker .Clear() recCnt = 0 .List(recCnt) = "" .ItemData(recCnt) = 0 Do Until rec.EOF recCnt = recCnt + 1 .List(recCnt) = rec("Name") .ItemData(recCnt) = rec("ID") rec.MoveNext() Loop End With Me.cboMaker.ListIndex = 0 rec.Close() : rec = Nothing con.Close() : rec = Nothing End Function
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
ADO.NETでは DataSet,DatTable,DataColumn DataConnection,DataAdapter, BaindingSource などを使って行います まず DataTableに列情報を DatatColumnを使って作成します このテーブルを DataSetと結び付けます BaindingSourceにDataSetとテーブルの関係を設定 ComboBoxのDataSource,DisplayMember,ValueMemberを設定DatatConnectionにデータベースとの接続を設定します DataAdapterを使ってデータベースからDataSetへ読み込みます といった手順です dim col(1) as new DataColumn Dim tbl as new DataTable("テーブル名") dim ds as new DataSet col(0) = new DataColumn("ID") col(1) = new DataColumn("Name") tbl.Columns.AddRange( col ) ds.tables.Add( tbl ) dim bind as new BindingSource bind.DataSource = ds bind.DataMember = "テーブル名" dim cnn as new oleDb.OleDbDataConnection cnn.connectionString = "接続用文字列" dim adp as new OleDB.OleDBDataAdapter("SQL文",cnn ) adp.Fill( ds, "テーブル名") cboMaker.DatSource = bind cboMaker.DisplayMember = "Name" cboMaker.ValueMember = "ID" といった具合です 選択された項目の『ID』の取得は cboMaker.SelectedValue で取得できます データセットにデータを読み込めれば コンボボックスに個別にデータを設定も可能です dim n as integer for each row as DataRow in ds.Tables("テーブル名") n = cboMaker.items.Add( Row("Name") ) next といった具合です しかし ItemDataプロパティが廃止されています これと互換のある機能は VB互換性ライブラリの SetItemData/GetItemDataを使うことになります SetItemData( cboMaker, n, row("ID") ) n = cboMaker.SelectedIndex nID = GetItemData( cboMaker, n ) といった使い方です # 参照設定や Imports互換性ライブラリを設定して使います 別の方法としては IDEのメニューの『データ』から『新しいデータソースの作成』のウィザードに従ってデータソースを作ります 一度アプリをビルドします ツールボックスの上部に 作成したデータセットのアイコンがあるのでこれを フォームにドラッグします ツールボックスから BindingSourceアイコンをドラッグします 作成されたBindingSoueceのDataSourceに 先のデータセットオブジェクト名 DataMemberにテーブル名 cboMakerの DataSoure、DisplayMember、valueMemberを設定 といった具合です