• ベストアンサー

フィールド名が取得したい

VB.NET2002をしようしています. ADO?(Dim myConnection As New System.Data.OleDb.OleDbConnection と定義)をしようした場合フィールド名はどのように記述すれば取得できるのでしょうか? OO4Oの場合ですと「dataset(column_no).Name」とすればできたと思うのですが,ADOには「.NAME」の修飾子がありませんでした. それに変わるものは何になるのでしょうか?

  • a-k-a
  • お礼率43% (77/176)

質問者が選んだベストアンサー

  • ベストアンサー
  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

いったんデータセットにデータを取り込んで、データセットを操作して取得するのがわかりやすいかと =============================================================== Dim DS As DataSet = New DataSet() Dim con As OleDbConnection = New OleDbConnection(strConnection) Dim myAdapter As OleDbDataAdapter = New OleDbDataAdapte("select * from 受注", con) 'データセットに受注テーブルのデータを入れる myAdapter.Fill(DS, "受注") Dim myTable As DataTable Dim myColumn As DataColumn For Each myTable In DS.Tables  For Each myColumn In myTable.Columns   MsgBox("カラム名:" & myColumn.ColumnName) ’←ココでカラム名を取得  Next Next

a-k-a
質問者

お礼

遅くなりまして申し訳ありません. サンプルを元に実装できました. ありがとうございました.

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

a) レコードセットを作成して、rs.Fields(1).Name――みたいにして名前を参照。 b) OleDbConnectionオブジェクトのメソッドGetOleDbSchemaTableを使ってテーブル情報を参照。 ――とか。

参考URL:
http://support.microsoft.com/kb/309488/ja
a-k-a
質問者

補足

ありがとうございます. 参考になりました.

関連するQ&A

  • データセットへの取得について

    VB2005はじめたばかりです。 MDBからデータを抽出してデータセットへのところでエラーとなります。 Private Sub Button1_Click Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As DataSet = New DataSet("t_社員") Dim cn As OleDb.OleDbConnection _ = New OleDb.OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\VB2005\SampleDB.mdb;") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 社員 where 社員番号=>101", cn) dAdp.Fill(dSet, "t_社員") ★ここでエラーとなってしまいます。【where 社員番号=>101", 】をトルと正常となります。 恐れ入りますがご指摘いただけますでしょうか。

  • GridViewのデータソースの入れ方がわかりません

    OleDb.OleDbDataAdapter' が定義されていません DataSet' が定義されていません。 OleDb.OleDbConnection' が定義されていません。 OleDb.OleDbDataAdapter' が定義されていません 以上の エラーが出ます 定義の、意味がわかりません 教えてください お願いします WinXP Microsoft Visual Web Developer 2008 ASPX Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As DataSet = New DataSet("顧客台帳") Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\*******\*****.mdb;") 'データセットに取得し、DataGridViewに関連付ける dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 顧客台帳", cn) dAdp.Fill(dSet, "顧客台帳") Me.GridView1.DataSource = dSet.Tables("顧客台帳") End Sub

  • DataGridの使用方法を教えてください

    VB.NET2002で表形式で表示(参照のみ)させたいのですが,FlexGridはないようでDATAGridを使用するように書いてありましたが, DATAGridの使用方法がよく分かりません. どのような手順をふんでコードを記述するのか教えてください. 1,フォームにDATAGrid1を貼り付け. (ボタンも貼り付け,ボタンクリックでSQL実行,表示のイメージ) 2,Btn1_Clickに以下コード記述.色々参考にしていたらよく分からない状態になってしまいました... Q.フォームのプロパティでのデザインは必須なんでしょうか? Dim myConnection As New System.Data.OleDb.OleDbConnection(sConnectionString) Dim myCommand As New OleDb.OleDbCommand _ ("select * from データ", myConnection) Dim myReader As OleDb.OleDbDataReader Dim dst As New DataSet("Table") 'DataTable("DataTable") dst.Tables.Add(New DataTable("dst")) Dim dc As DataColumn myConnection.Open() myReader = myCommand.ExecuteReader 'データの読み込み While (myReader.Read) DataGrid1.DataSource = myReader.GetValue(0) End While DataGrid1.SetDataBinding(dst, "dst") myConnection.Close() myConnection = Nothing myReader.Close() myReader = Nothing myCommand = Nothing myConnection.Close() 'データベース閉じる myConnection = Nothing

  • VB2008データベース

    非接続型データベースでUpdateをする文を書いていますがUpdateでエラーが出てしまいます。  OleDbCommandBuilder の参照をネットで確認等していますがエラーの内容がわかりません。 データベース参考書等にも下記と同じ文例でかいてあります。 どなたか教えてください。 *VB2008で開発しています。 Dim cn As OleDb.OleDbConnection Dim Buf As String Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As DataSet Dim dTbl As DataTable Dim cBuild As OleDb.OleDbCommandBuilder Buf$ = DefCnSt$ & X_SystemFile$ & ";Jet OLEDB:Database Password=" & XdtPs$ cn = New OleDb.OleDbConnection(Buf$) dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 物件", cn) dSet = New DataSet("物件") dAdp.Fill(dSet, "物件") dTbl = dSet.Tables("物件") dTbl.Rows(2)(1) = "ABC" cBuild = New OleDb.OleDbCommandBuilder(dAdp) dAdp.Update(dSet, "物件") <-ここでエラーが出ます。

  • OLE でACCESSデータを取得するとメモ型の内容255文字で切れてしまう

    お世話になります。 ■開発環境  VisualBasic2008 Express Edition  ACCESS2003(データ) ■質問内容  VBでaccessのmdbからデータを取得し、画面に表示しようと  しています。  ところが、メモ型の項目が255文字で切れてしまいます。  webでいろいろと調べましたが、jetエンジンの問題かなという  ところまではたどり着いたのですが、具体的にどうすれば改善  できるのかわかりません。  わかる方教えていただけないでしょうか。  よろしくお願いいたします。 ■ソース Dim SQL As String Dim Cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\message.mdb;") Dim dAdp As OleDb.OleDbDataAdapter Dim dView As DataView Dim dSet As DataSet = New DataSet("Detail") SQL = "SELECT M_ID,M_Title,M_Detail FROM MESSAGE_TBL " dAdp = New OleDb.OleDbDataAdapter(SQL, Cn) dAdp.Fill(dSet, "Detail") dView = New DataView(dSet.Tables("Detail"), "", "", DataViewRowState.CurrentRows) DataGridView1.DataSource = dView M_ID : 数値型、M_Title : テキスト型、M_Detail : メモ型 DataGridView1に表示されるときには、M_Detailが255文字になっています。     また、 'MessageBox.Show(Len(dSet.Tables("Detail").Rows(1)(2)))     で見たときにすでに255文字に切れていました。

  • VB.netでJet.OLEDBを使いCSVを読み

    VB.netでOleDbConnectionを使ってCSVを読み込むと便利ですが、属性判定を勝手にされたくありません。 どうすればコントロールできますか? 個別に属性を決めるか、もしくは全部文字列として受け取りたいです。 何もしなければ、項目の属性が自動で決まりますが、その属性判断が甘く、属性に合わない値が消えます。 例えば、 日付項目っぽい値が入っている項目にたまに文字列がるとすると、 その項目が日付項目になって、日付項目に合わないデータは空白になってしまいます。 CSVの読み込みは一旦すべて文字列にして受け取り、その後の事はアプリでコントロールしたいです。 どうすればできますか? Dim OleDbConnection1 As New OleDb.OleDbConnection Dim OleDbCommand1 As New OleDb.OleDbCommand Dim OleDbDataAdapter1 As New OleDb.OleDbDataAdapter Dim FileInfo1 As New FileInfo(CSVファイルの名前をフルパスで) OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & FileInfo1.DirectoryName & "\;" _ & "Extended Properties=" & ControlChars.Quote & "Text;HDR=No;FMT=Delimited" & ControlChars.Quote OleDbConnection1.Open() OleDbCommand1.CommandText = "SELECT * FROM [" & FileInfo1.Name & "]" OleDbCommand1.Connection = OleDbConnection1 OleDbDataAdapter1.SelectCommand = OleDbCommand1 OleDbDataAdapter1.Fill(DataTable1) OleDbDataAdapter1.Dispose() OleDbCommand1.Dispose() OleDbConnection1.Dispose()

  • ADO.NETのFillメソッドのパラメータ

    テーブル名:項目名 海:気温、水温、大きさ(0:大きい、1:小さい) 教科書:科目、値段 上記のようなテーブルがあり、以下のようなSelect文によりデータを データセットに取得したいのですが、 コンパイルは通り、実行するとFillメソッドでエラーになります。 try~catchをしてエラーの内容を見てみると「FROM句の構文エラー」と出ています。 Fillメソッドの2つめのパラメータにどちらのテーブル名を入れても、 同じエラーになります。 複数のSelect文をAdapterに設定した場合、 2つ目のパラメータは一体なんなのでしょうか。 Adapterを2つに分ける方法ではなくこの方法でどうすればいいのか、 教えてください。よろしくお願いいたします。 初心者ですので、簡単に教えていただけるとありがたいです。 --------------------------------------------------Dim oleCn As OleDb.OleDbConnection = New OleDb.OleDbConnection Dim dataSet = New DataSet oleCn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;"~ Dim oDataAdapter As New OleDb.OleDbDataAdapter("SELECT 科目 FROM 教科書" + _ "SELECT 水温 FROM 海 WHERE (大きさ = 0)", oleCn) oDataAdapter.Fill(dataSet)

  • (ADO)フィールド名から取得したい

    ADOを使ってエクセルからアクセスのデータを取得しています。 (2003です。) Sub アクセスのデータをエクセルへ() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim i As Long Range("a1") = "番号" Range("b1") = "種類" rs.Open "SELECT * FROM Tbl", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount Range("a" & i + 1) = rs("番号") Range("b" & i + 1) = rs("種類") rs.MoveNext Next i End Sub 結果は    A     B 1  番号   種類 2  ××   ○○ となるのですが コート゛の Range("a1") = "番号" Range("b1") = "種類" の部分を省略して テーブルのフィールド名から取得できないでしょうか? 例は2つのフィールドしかないから楽なのですが 実際はTblには30列くらいあるのです。 アクセスのOffice Linksや アクセスからメニュー[ファイル]-[エクスポート]のような結果がほしいです。 どうしてもADOでやりたいので どなたかご教授よろしくお願いします。

  • ADO.NETのOleDbAdapterに設定するSelect文

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1345496に関連して・・・ テーブル名:項目名 部屋:科目、部屋 教科書:科目、値段 上記のようなテーブルがあり、以下のようなSelect文によりデータを データセットに取得したいのですが、 コンパイルは通り、実行するとFillメソッドでエラーになります。 try~catchをしてエラーの内容を見てみると「FROM句の構文エラー」と出ています。 Fillメソッドの2つめのパラメータにどちらのテーブル名を入れても、 同じエラーになります。 UNION句でつないだSelect文をAdapterに設定した場合、 2つ目のパラメータは一体なんなのでしょうか。 Fillメソッドのパラメータがおかしいのでなければ、 SELECT文のどこがおかしいでしょうか。 教えてください。よろしくお願いいたします。 ---------------------------------------------------------------- Dim oleCn As OleDb.OleDbConnection = New OleDb.OleDbConnection Dim dataSet = New DataSet oleCn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;"~ Dim oDataAdapter As New OleDb.OleDbDataAdapter("SELECT 科目 FROM 部屋" & _ "UNION SELECT 科目 FROM 教科書 WHERE (値段 > 1000)", oleCn) oDataAdapter.Fill(dataSet)

  • エラーでつまってます・・・お助け下さい

    VS2003.NETで開発中の初心者です。 以下のコード(Form1.vb)を実行すると次のエラーがポップアップされ“oADP.Fill(oDS, "ROOT")”のラインで止まります。 <エラー> 'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。 どこがおかしいのかわかりません。 詳しい方がいましたら、ご教授下さいませ。 ---------------------------- Imports System.Data.OleDb Public Class Form1  Inherits System.Windows.Forms.Form  Private oConn As OleDb.OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0" & ";Data Source=..\USER.mdb") 「Windows フォーム デザイナで生成されたコード」   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    '--DataAdapterの設定    Dim oADP As OleDb.OleDbDataAdapter    oADP = New OleDb.OleDbDataAdapter("SELECT *FORM TALK WHERE Node=0 ORDER BY No", oConn)    '--DataSetの設定    Dim oDS As New DataSet    oADP.Fill(oDS, "ROOT")        ・        ・        ・ ----------------------------