- ベストアンサー
Visual Basicでデータベース接続について
- VBでデータベース接続についての基礎知識と、CSVファイルのメモリへの格納方法について紹介します。
- VB初心者の方でも理解しやすいデータベース接続とCSVファイルのメモリへの格納方法について解説します。
- データベース接続とCSVファイルのメモリへの格納方法について、VBの初心者の方でも簡単に理解できるように説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2段階に分けて考えましょう。 1.Oracleからデータを抽出してDataTableに保存。 2.DataTableの中のデータをCSVファイルに保存する。 そこで次のサイトが参考にならないでしょうか。 1.http://www.oborodukiyo.info/ADONET/VS2008/ADONET-HowToAccessOracle.aspx 2.http://www.oborodukiyo.info/CSharp/VS2010/CS-SaveDataTableToCSV.aspx 1ではDataTableにデータを入れた後、DataGridViewで表示していますが、ここは省略してみて考えてください。 頑張ってください。
その他の回答 (3)
- BarcodeMaster
- ベストアンサー率73% (17/23)
直接Oracleから取り込むにしろ、Oracleからのデータ取得が理解できなければなにもできないのではないでしょうか? まずは、他の回答者がおっしゃられている通り、簡単なCSV出力から試してみては? それが理解できれば、元のコードに組み込むことも出来るのではないでしょうか?
- imogasi
- ベストアンサー率27% (4737/17069)
Oracleのデータをカンマ区切りファイル(CSV)に落としてください。 #1のご回答でもおっしゃっています。そのやり方を勉強してください。 CSVファイルは、異種のソフトの、(テキスト)データ受け渡しの、汎用性がある、最後の手段です。 そしてエクセルブックを開き、VBE画面を開き、標準モジュールに(この辺はエクセル マクロやVBAの解説書やWEB記事(「エクセル VBA 実行方法」で検索)を読んでください) Sub test01() Set objfs = CreateObject("scripting.filesystemobject") 'VBSを使う宣言 Dim s As Variant Set objtext = objfs.OpenTextfile("C:\Users\XXX\documents\発注明細0710.csv") 'CSVファイルのフルパス指定。ファイルを開く。 i = 1 'エクセルのシートの第1行の1 Do While objtext.atendofstream <> True 'ファイルデータの最終行まで繰り返し mytext = objtext.readline '1行を読む MsgBox mytext '確認のた画面に表示。本番では削除かコメント化 s = Split(mytext, ",") 'セパレータ文字のカンマで区切って分離して、配列的なところsへ入れる '下記部分で、各列のセルへ項目データを配分 For j = 0 To UBound(s) - 1 Worksheets("Sheet1").Cells(i, j + 1) = s(j) 'j+1の+1は、sが0から始まるので必要。Sheet1に書き出す。 Next j i = i + 1 'シートの次行に書き出す用意。iはポインター的なもの Loop objtext.Close '作業終了したので、ファイルを閉じる End Sub をコピペする。実行するとエクセルシート(Sheet1)に データが展開される。上記は、VBScriptをVBAでやるもの。 ReadAllに対してReadLineの考え方、扱い方です。 VB初心者なら、こちらが「当面のおすすめ」。 今後VBを勉強してください。 結果(私のサンプル例) 発注リスト 商品番号 商品名 メーカー 数量 単位 12324 ノート A製紙 20 包 24123 マーカー 近藤産業 30 箱 35922 クリップ 井上金属 10 箱 47721 消しゴム B産業 5 袋 59520 ホッチキス C精工 5 箱
- angel2015
- ベストアンサー率21% (126/590)
わからないのでしたらOracleテーブルをcsvファイルにしたほうが早いかと思われます これは比較的簡単な作業なので、検索すれば色々出てきます その上でcsvデータを読み込めば同一の作業はできるかと
補足
angel2015さん、アドバイスありがとうございます。 おっしゃる通りcsvファイルを作成後、現在のコードを通せば 良いのですが、少しでも処理時間を短縮したかったので 直接データベースからの処理をしたいのです。