投稿時間: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');」)。
書籍を読んだ所、コンマで読み込みの区切りとなるというところまで突き止めました。 変数を配列とかで数多く宣言してもコンマはいくつあるか変わってくるので その方法は基本的には考えていません。 コンマを含め一行で読み込む方法はございますか? ご教授お願いします。
|