VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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');」)。

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -