CSVファイルをデータグリッドに表示するには?

解決


ぽこ  2003-10-29 20:58:42  No: 80092

初心者PGのぽこです。

あるCSVファイルの中身をデータグリッドに表示させたいのですが
やり方がイマイチよくわかりません。
CSVファイルの中身を配列変数に読み込ませるまではいっています。
その後データソースに直結?するらしいですが・・・?
あちこち検索して試してみていますがうまくいきません。

どなたかご存じのかた、教えてください。<(_ _)>


Say  2003-10-29 21:39:02  No: 80093

表示するだけなら、
CSVをテキストDBとして直接開いて
Recordsetを生成してDataGridに
つなぐほうが簡単では?


ぽこ  2003-10-29 22:03:02  No: 80094

ありがとうございます。
しかし仕組みがよく分かってないので・・(^^;)勉強不足ですみません。
以下のようなやり方になるんでしょうか。
これはこのサイトにあったやつなんですが・・

Dim DAOdb  As DAO.Database
Dim DAORst As DAO.Recordset

FilePath = "C:\Windows"

Set DAOdb = DBEngine.Workspaces(0).OpenDatabase(_
            FilePath, False, False, "Text;DATABASE=" & _
            FilePath & "\;HDR=NO")
    
strSQL = "Select * from [カレンダー#csv] "

Set DAORst = DAOdb.OpenRecordset(strSQL, dbOpenDynaset)

Set DataGrid1.DataSource = DAORst


やまごろ  2003-10-30 00:07:22  No: 80095

データコントロール+グリッド+JetISAMドライバ+SCHEMA.INI
これだけあれば簡単にCSVに対してSQLを発行出来るぞえ。
コーディングなんか殆ど要らんで。プロパティ2〜3個設定するだけだぞい。
これくらいヤマカンで出来るじゃろ。一日試行錯誤してダメなら何をどうしたらどうダメか質問してみなっせ。


ぽこ  2003-10-30 00:40:07  No: 80096

う〜む・・
全然分かりません・・・

ちょっとここで質問するには私のレベルが低すぎですね。
また出直します


ぽこ  2003-10-30 04:25:51  No: 80097

いろいろ試してみてるんですが、以下でCSVファイルには接続できて
いるようです。が、最後のところで「型が一致しません」になります。
まだとんちんかんなことをしてるのかもしれないですが何かヒントを
頂けないでしょうか
 

 Dim DAOdb  As DAO.Database
 Dim DAORs As DAO.Recordset
 Dim PATH, strSQL As String
 
 PATH = "C:\Windows\System32\"
 
 Set DAOdb = DBEngine.Workspaces(0).OpenDatabase( _
            PATH, False, False, "Text;DATABASE=" & PATH & "\;HDR=NO")

 strSQL = "Select * from [カレンダー#csv] "

 Set DAORs = DAOdb.OpenRecordset(strSQL, dbOpenDynaset)
 
 Set DataGrid1.DataSource = DAORs    ←ここで落ちる


k.k  2003-10-30 05:12:14  No: 80098

多分そのコントロールがOLEDB対応版のものだからだと思います。
コンポーネントを追加するときに(OLEDB)となっているものがそれに
あたり、これらはDAOではなくADOというデータベースコンポーネントを
使用しなければなりません。
ですので、DataGridのDataSourceにはADOのレコードせっとをセットしなければいけませんね。
ですので「型が一致しません」と言うメッセージが表示されてしまうと思います。


ぽこ  2003-10-30 20:03:11  No: 80099

データアクセスが違ってたんですね。ありがとうございます。
以下のようにすると、1行1項目のみですが表示されるように
なりました。表示された後、「現在の行は使用できません」という
メッセージが出ますが・・

    Dim CN          As New ADODB.Connection
    Dim RS          As New ADODB.Recordset
    Dim Path        As String
    Dim txtDRIVER   As String
    Dim Data        As String
    Dim strSQL      As String
    Dim strProvider As String

    Path = "C:\Windows\System32\"
    Data = "カレンダー.csv"

    strProvider = "Provider=MSDASQL;Extended Properties="""

    txtDRIVER = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ="

    CN.ConnectionString = strProvider & txtDRIVER & Path & """"

    CN.Open

    strSQL = "Select * From " & Data

    RS.Open strSQL, CN, adOpenStatic, adLockPessimistic

    Set DataGrid1.DataSource = RS

    RS.Close
    CN.Close

    Set RS = Nothing
    Set CN = Nothing


k.k  2003-10-30 21:49:48  No: 80100

Path = "C:\"
    Data = "test.txt"
    strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";Extended Properties='TEXT;HDR=NO'"
    CN.CursorLocation = adUseClient
    CN.ConnectionString = strProvider
    CN.Open
    strSQL = "Select * From " & Data
    RS.Open strSQL, CN
    Set DataGrid1.DataSource = RS

こんな感じで表示できます。


Say  2003-10-30 21:54:43  No: 80101

Dim CN          As New ADODB.Connection
    Dim RS          As New ADODB.Recordset
はモジュールレベルに

    RS.Close
    CN.Close

    Set RS = Nothing
    Set CN = Nothing
は別イベントに

念のためCN.Open前に
    CN.CursorLocation = adUseClient
ついでにcsvファイルがおかしくないかチェック。


ぽこ  2003-10-31 17:54:52  No: 80102

できました!(^o^)うれしい

うむ〜、もっと勉強しなきゃだめですね・・。
本当にありがとうございます。
今度はこれを、編集できて元のCSVデータに書き出しできる
ようにトライしてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加