投稿日 | : 2007/01/19(Fri) 11:00 |
投稿者 | : トッチー |
Eメール | : |
URL | : |
タイトル | : open 〜 Inputの構文 コンマつき |
VB6で
open 〜 Inputの構文で質問します。
下記ソース
Private Sub fsfileopen()
Dim intErrNum As Integer
Dim fn As Integer
Dim strpath As String '選択したファイルのフルパス
Dim strcon As String '1行の内容
Dim strall As String '全体
Dim bl As Boolean
Dim mess As String
'エラーを無視する
On Error Resume Next
'ファイルを開くダイアログボックスを表示する
With cmnDialog
.Filter = "sqlファイル(*.sql)|*.sql|テキストファイル(*.txt)|*.txt"
.ShowOpen
strpath = .filename
End With
'エラー状況を取得する
intErrNum = err.Number
'エラー処理を元に戻す
On Error GoTo 0
'キャンセルで無ければ読み込む
If intErrNum <> cdlCancel Then
strall = vbNullString
With txtSQL
fn = FreeFile
'入力値が空白もしくはパスが存在しない場合は処理を行わない
If Dir(strpath, vbNormal) <> "" And strpath <> "" Then
.text = vbNullString
Open strpath For Input As fn
Do While Not EOF(1)
bl = True
Input #fn, strcon
'当ツールで作成されたファイルを読み込む場合余分な部分を取る
If StrConv(Left(strcon, 6), vbUpperCase) = "SPOOL " Then
bl = False
ElseIf InStr(1, StrConv(strcon, vbUpperCase), "EXIT", 1) <> 0 Then
bl = False
ElseIf StrConv(Left(strcon, 6), vbUpperCase) = "PROMPT" Then
bl = False
ElseIf StrConv(Left(strcon, 8), vbUpperCase) = "SET LINE" Then
bl = False
ElseIf StrConv(Left(strcon, 12), vbUpperCase) = "SET PAGESIZE" Then
bl = False
End If
If bl = True Then
strall = strall & strcon & vbCrLf
End If
DoEvents
Loop
Close #fn
.text = strall
Else
mess = msgbox("入力値が不正です")
End If
End With
End If
End Sub
で、sqlファイルを読み込むと「100);」しか表示されません
sqlファイルの中身は
Insert into test_table values (1, '浜口' , 100);
ちなみに
desc test_table
名前 NULL? 型
----------------------------------------------------- -------- ------------------------------------
ID NOT NULL NUMBER(38)
S_NAME NOT NULL VARCHAR2(15)
PRICE NOT NULL NUMBER(10)
但し、読み込むSQLファイルは状況によって違うので
「select * from test_table;」
のようにコンマが無い場合(この場合は全て読み込める)や
「Insert into super_table values (1, '浜口' , 100 , 200 , '2007-01-01');」
のようにテーブルの列数は常に変わります(この場合は「'2007-01-01');」)。
書籍を読んだ所、コンマで読み込みの区切りとなるというところまで突き止めました。
変数を配列とかで数多く宣言してもコンマはいくつあるか変わってくるので
その方法は基本的には考えていません。
コンマを含め一行で読み込む方法はございますか?
ご教授お願いします。