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
一応、抽出できたコード
[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
特攻隊長まるるう さん返信有難う御座います。
>WHERE [no] = '00000100'
[]をつけたら上手くいきました。
有難う御座います。
一歩進んだらまた問題が出てしまいました。
上記の方法でオープンを掛けると型が違うとエラーが出て上手くいかず
試しに
WHERE [no] = 100
で開いたら上手く取得することが出来ました。
調べたら、SCHEMA.INI が無ければ
ユーザー定義で型が決まってしまうとの事でした。
サイトをみながらINIファイルを作成したのですが、
このINIをどのように扱ったら良いのかわかりません。
甘えてばかりで申し訳ないのですが、アドバイスお願い致します。
>> WHERE [no] = '00000100'
> []をつけたら上手くいきました。
これは、「Yes/No型」という物があるためで、単に no と書くと、
False や 0 を意味するキーワードとして解釈されてしまうためです。
[ ]で囲っておくと、キーワードではなく、列名やテーブル名として
認識されるようになる、という事ですね。
> 調べたら、SCHEMA.INI が無ければ
そのファイルを、csvファイルのあるフォルダに配置しておけば OK です。
なお、SCHEMA.INI の定義は、"Jetデータベースエンジン プログラマーズガイド"
という書籍に詳しく書かれています。(今では入手困難かも知れませんが)
あるいは、管理ツール(コントロールパネル)のODBC の設定画面にて、
Text Driver で、書式の定義を手動で設定すれば、そのファイルのある
フォルダに、SCHEMA.INI が生成されますので、それを参考にするのも良いでしょう。
魔界の仮面弁士 さん返信有難う御座います。
>[ ]で囲っておくと、キーワードではなく、列名やテーブル名として
>認識されるようになる、という事ですね。
なるほど!
>そのファイルを、csvファイルのあるフォルダに配置しておけば OK です。
無事動きました。
>なお、SCHEMA.INI の定義は、"Jetデータベースエンジン プログラマーズガイド"
>という書籍に詳しく書かれています。(今では入手困難かも知れませんが)
みかける事があったら見てみたいと思います。
有難う御座いました。
ツイート | ![]() |