ADOを使ってCSVファイルを読込 |
ADOを使ってCSVファイルをMSHFlexGridに表示する (284) | |
FormにMSHFlexGrid1とCommand1を貼り付けておいて下さい。 カンマ区切りの Test.csv ファイルをプログラムと同じフォルダーに準備しておいて下さい。 参照設定で Microsoft ActiveX Data Objects 2.5 Libraryにチェックを入れておいて下さい |
|
Option Explicit 'SampleNo=284 WindowsXP VB6.0(SP5)
2003.04.17 Private Sub Command1_Click() Dim CN As New ADODB.Connection, RS As New ADODB.Recordset Dim FolderName As String, txtDRIVER As String Dim DataFile As String, strSQL As String Dim strProvider As String Screen.MousePointer = vbHourglass MSHFlexGrid1.Clear DoEvents FolderName = App.Path 'データのあるフォルダーを取得 DataFile = "Test.csv" 'データファイル名を取得 'データベースに接続するための情報を設定する strProvider = "Provider=MSDASQL;Extended Properties=""" txtDRIVER = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=" CN.ConnectionString = strProvider & txtDRIVER & FolderName & """" CN.Open 'コネクションをオープン 'Recordsetオブジェクトのオープン strSQL = "Select * From " & DataFile RS.Open strSQL, CN, adOpenStatic, adLockReadOnly, adCmdText Set MSHFlexGrid1.DataSource = RS 'MSHFlexGridにデータを代入 'Recordset・Connection を閉じる RS.Close CN.Close '参照を解放。 Set RS = Nothing Set CN = Nothing Screen.MousePointer = vbDefault End Sub |
|
掲示板に投稿があって、試してみたらかなり高速に読込表示でき ADO+MSHFlexGrid+CSV の 組み合わせは結構使えるかなと思い紹介します。 私も今回初めてADOを扱いました。色々調べた結果を下記に書き留めておきます。 ODBC接続 Provider=MSDASQL 使用するデータベースの種類 Extended Properties="" ODBC ドライバーのための設定は、Extended Properties = に一括し て与えます。これらを一まとめにするために、" (ダブルクォーテーション) が利用されます。 上のコードでは、文字列の中に入る " をエスケー プするために二重に記述しています" DRIVER={Microsoft Text Driver (*.txt; *.csv)} ODBCドライバー名 DBQ=FolderName ODBCドライバーを使って接続するデータベースファイル名(フォルダー名) Data Source 使用するデータベースファイル名 User ID データベースに接続する時に使用するユーザー名 Password データベースに接続する時に使うパスワード FILE NAME データベースへの接続情報指定したデータリンクファイル名 DSN データベースへの接続情報指定したODBCデータソース名 Location 接続先のサーバー名 ------------------------------------------------------------------------- Open メソッド 構文 Recordset.Open Source, ActiveConnection, CursorType, LockType, Options 実文 RS.Open strSQL, CN, adOpenStatic, adLockReadOnly, adCmdText Recordset Recordsetオブジェクトを表すオブジェクト変数 (RS) Source 省略可能です。データを取得するテーブル名又はSQLステートメント (strSQL = "Select * From " & DataFile) ActiveConnection 省略可能です。接続中のデータベースを表すオブジェクト変数 (CN) CursorType 省略可能です。カーソルタイプ(下記定数より選択) 定 数 説 明 adOpenForwardOnly デフォルトの値です。前方スクロール タイプ カーソルを開きます。 adOpenKeyset キーセット カーソルを開きます。 adOpenDynamic 動的カーソルを開きます。 adOpenStatic 静的カーソルを開きます。 LockType 省略可能です。ロックタイプ(下記定数より選択) 定 数 説 明 adLockReadOnly デフォルトの値です。読み取り専用 ― データの変更はできません。 adLockPessimistic レコードごとの排他的ロック ― 通常、編集の際にプロバイダーがデー タ ソースでレコードをロックすることにより、確実にレコードを編集で きるために必要な最小限のロックを使用します。 adLockOptimistic レコードごとの共有的ロック ― Update メソッドを呼び出した場合の み、プロバイダーが共有的ロックを使用してレコードをロックします。 adLockBatchOptimistic 共有的バッチ更新 ― 即時更新モードに対して、バッチ更新モード の場合に必要です。 Options 省略可能です。Source 引数が Command オブジェクト以外の設定値を表 す場合、または以前に保存していたファイルから Recordset を復元する 場合に、プロバイダーが引数を評価する方法を示す IMEX= 0 is Export mode 1 is Import mode 2 is Linked mode (full update capabilities) 詳しくはヘルプ等を見て下さい。 DAO同様読込ファイルの型指定は SCHEMA.INI ファイルを使用する事でできます。SCHEMA.INI については http://www.akj.co.jp/aug/qa/ans0001-0050/0315.html を参考にして下さい。 |
2003/04/20