質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

8121閲覧

vb.netでaccessのクエリーを実行して、accessで表示される並び順に列名を取得したい

hpptms

総合スコア54

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2015/07/03 02:57

編集2015/07/03 03:58

vb.netでaccess内に作成したクエリを実行して、出力したいと考えております。
クエリーの要素はaccess上で表示された順番通りに取得出来るのですが、
列名がaccessで表示された順番通りに取得出来ず、困っております。

以下、ソースになります。

lang

1'DB操作用 2 Dim oCn As OleDbConnection = Nothing 3 Dim DBcmd As OleDbCommand = Nothing 4 Dim Query As String = "" 5 Dim DBCn As String = "" 6 Dim Colums As DataTable 7 8 'コネクション用文字列作成 9 DBCn = "Provider=Microsoft.Jet.OLEDB.4.0;" 10 DBCn &= "Data Source=" & DBpath & ";" 11 12 Try 13 'コネクションオブジェクト設定 14 oCn = New OleDbConnection(DBCn & "Mode=Share Exclusive;") 15 16 '発行するクエリを選択(別メソッドでクエリの文字列を生成するだけです) 17 Query = ChoiceQuery(Service) 18 19 'クエリを設定 20 DBcmd = New OleDbCommand("Execute " + Query, oCn) 21 oCn.Open() 22 23 '列名取得要の設定 24 Colums = oCn.GetSchema("Columns", New String() {Nothing, Nothing, Query}) 25 26 Dim DBDateReader As OleDbDataReader = DBcmd.ExecuteReader() 27 28 29 '列名を取得 30 For i As Integer = 0 To Colums.Rows.Count - 1 31 Console.WriteLine(Colums.Rows(i)(("COLUMN_NAME").ToString)) 32 Next i 33 34 '要素を取得 35 While DBDateReader.Read() 36 'カラムの数だけループ 37 For i = 0 To DBDateReader.FieldCount - 1 38 Console.WriteLine(DBDateReader(i).ToString()) 39 Next i 40 41 End While 42 43 Catch ex As Exception 44 45 Finally 46 If Not IsNothing(oCn) Then 47 oCn.Close() 48 oCn = Nothing 49 End If 50 End Try

上記のソースで出力すると、列名がaccess上の表示通りに取れず、
要素との関連性が分からなくなってしまいます。

列名をaccess上で表示された通りに取得出来る方法をご存じの方いらっしゃいましたら、ご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

お昼を食べていたら、そもそもSQLを自分で書いたらいいんじゃないかと思い、
少し調べたら、SQLを書かないでも取得する方法が書いてありました。

上記のソースで要素を取り出しているコマンド部分を利用して、

For i = 0 To DBDateReader.FieldCount - 1

Console.WriteLine(DBDateReader.GetName(i))

Next

これで順番通りに取得出来ました。

OleDbConnection
OleDbCommand←こっちを使えば取れる

コマンドの方を利用すれば良かったんですね^^;
失礼致しました。

投稿2015/07/03 04:33

hpptms

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問