CSVファイルをデータベースの様に扱い

解決


りん  2006-05-19 00:30:34  No: 131464

VB6
Win2000

CSVファイルをデータベースの様に扱いたくて、
下記のコードを書いのですが、

SELECTする時の条件文の記述の仕方がわかりません。
"WHERE no = '00000100'"のような文を加えたいのですがどうしら
ようのでしょうか?

アドバイスを下さい宜しくお願い致します。

Dim strSQL As String
Dim strCnn As String
Dim rs As New ADODB.Recordset

'strSQL = "SELECT * FROM TEST#csv WHERE no = '00000100';" ←これじゃ駄目でした

strSQL = "SELECT * FROM TEST#csv;"
strCnn = "Provider=MSDASQL;" & _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DefaultDir=E:\TEST"
rs.Open strSQL, strCnn


特攻隊長まるるう  2006-05-19 01:17:03  No: 131465

一応、抽出できたコード
[VB6.0]
Option Explicit
Private Sub Command1_Click()
    Dim Cnn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strSQL As String
    Cnn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" _
             & "DBQ=E:\TEST;ReadOnly=0"
    strSQL = "SELECT * FROM TEST#csv.csv WHERE [no] = '00000100'"
    Set rs = Cnn.Execute(strSQL)
    With rs
        Do Until .EOF = True
            Debug.Print .Fields("no").Value
            .MoveNext
        Loop
        .Close
    End With
    Cnn.Close
End Sub


りん  2006-05-19 02:17:07  No: 131466

特攻隊長まるるう さん返信有難う御座います。

>WHERE [no] = '00000100'
[]をつけたら上手くいきました。
有難う御座います。

一歩進んだらまた問題が出てしまいました。

上記の方法でオープンを掛けると型が違うとエラーが出て上手くいかず
試しに
WHERE [no] = 100
で開いたら上手く取得することが出来ました。

調べたら、SCHEMA.INI が無ければ
ユーザー定義で型が決まってしまうとの事でした。

サイトをみながらINIファイルを作成したのですが、
このINIをどのように扱ったら良いのかわかりません。

甘えてばかりで申し訳ないのですが、アドバイスお願い致します。


魔界の仮面弁士  2006-05-19 02:35:33  No: 131467

>> WHERE [no] = '00000100'
> []をつけたら上手くいきました。
これは、「Yes/No型」という物があるためで、単に no と書くと、
False や 0 を意味するキーワードとして解釈されてしまうためです。

[ ]で囲っておくと、キーワードではなく、列名やテーブル名として
認識されるようになる、という事ですね。

> 調べたら、SCHEMA.INI が無ければ
そのファイルを、csvファイルのあるフォルダに配置しておけば OK です。

なお、SCHEMA.INI の定義は、"Jetデータベースエンジン プログラマーズガイド"
という書籍に詳しく書かれています。(今では入手困難かも知れませんが)

あるいは、管理ツール(コントロールパネル)のODBC の設定画面にて、
Text Driver で、書式の定義を手動で設定すれば、そのファイルのある
フォルダに、SCHEMA.INI が生成されますので、それを参考にするのも良いでしょう。


りん  2006-05-19 03:22:27  No: 131468

魔界の仮面弁士 さん返信有難う御座います。

>[ ]で囲っておくと、キーワードではなく、列名やテーブル名として
>認識されるようになる、という事ですね。

なるほど!

>そのファイルを、csvファイルのあるフォルダに配置しておけば OK です。
無事動きました。

>なお、SCHEMA.INI の定義は、"Jetデータベースエンジン プログラマーズガイド"
>という書籍に詳しく書かれています。(今では入手困難かも知れませんが)

みかける事があったら見てみたいと思います。

有難う御座いました。


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




  


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