初心者PGのぽこです。
あるCSVファイルの中身をデータグリッドに表示させたいのですが
やり方がイマイチよくわかりません。
CSVファイルの中身を配列変数に読み込ませるまではいっています。
その後データソースに直結?するらしいですが・・・?
あちこち検索して試してみていますがうまくいきません。
どなたかご存じのかた、教えてください。<(_ _)>
表示するだけなら、
CSVをテキストDBとして直接開いて
Recordsetを生成してDataGridに
つなぐほうが簡単では?
ありがとうございます。
しかし仕組みがよく分かってないので・・(^^;)勉強不足ですみません。
以下のようなやり方になるんでしょうか。
これはこのサイトにあったやつなんですが・・
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
データコントロール+グリッド+JetISAMドライバ+SCHEMA.INI
これだけあれば簡単にCSVに対してSQLを発行出来るぞえ。
コーディングなんか殆ど要らんで。プロパティ2〜3個設定するだけだぞい。
これくらいヤマカンで出来るじゃろ。一日試行錯誤してダメなら何をどうしたらどうダメか質問してみなっせ。
う〜む・・
全然分かりません・・・
ちょっとここで質問するには私のレベルが低すぎですね。
また出直します
いろいろ試してみてるんですが、以下で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 ←ここで落ちる
多分そのコントロールがOLEDB対応版のものだからだと思います。
コンポーネントを追加するときに(OLEDB)となっているものがそれに
あたり、これらはDAOではなくADOというデータベースコンポーネントを
使用しなければなりません。
ですので、DataGridのDataSourceにはADOのレコードせっとをセットしなければいけませんね。
ですので「型が一致しません」と言うメッセージが表示されてしまうと思います。
データアクセスが違ってたんですね。ありがとうございます。
以下のようにすると、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
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
こんな感じで表示できます。
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ファイルがおかしくないかチェック。
できました!(^o^)うれしい
うむ〜、もっと勉強しなきゃだめですね・・。
本当にありがとうございます。
今度はこれを、編集できて元のCSVデータに書き出しできる
ようにトライしてみます。
ツイート | ![]() |