掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バインド配列に変換 (ID:108520)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
返事ありがとうございます。 下に載せるソースはCSVファイルのインポートをするものですが、 あまりに処理が遅いためバインド配列を利用しようと考えました。 バインド配列に関しては自分なりに調べました。 配列のサンプルになると、どれもFor文になってしまうし、 EOFの場合では、どのようなソースにしてよいのかわからないので 質問させていただきました。 Public Function ImportData(ByVal vstrFilename As String) As Boolean Dim strSQL As String 'SQL文 Dim blnRet As Boolean Dim lngRet As Long Dim intFno As Integer Dim strData As String '項目値 Dim strBuf As String '読み込みバッファ Dim strErrText As String On Error GoTo errInsertData: blnRet = False intFno = FreeFile Open vstrFilename For Input Access Read Lock Read Write As #intFno '定義体のフィールド取得 Line Input #intFno, strBuf sesOra.BeginTrans Do While InStr(strBuf, ",") > 0 strSQL = strSQL & Trim$(Left$(strBuf, InStr(strBuf, ",") - 1)) & "," strBuf = Mid$(strBuf, InStr(strBuf, ",") + 1) DoEvents Loop sesOra.CommitTrans strSQL = "INSERT INTO ITEM (" & _ strSQL & Trim$(strBuf) & _ ") VALUES" 'テーブルにデータをINSERTする sesOra.BeginTrans Do While Not EOF(intFno) Line Input #intFno, strBuf '1行分のデータを設定する strData = "" Do While InStr(strBuf, ",") > 0 strData = strData & "'" & strQuote(Trim$(Left$(strBuf, InStr(strBuf, ",") - 1))) & "'," strBuf = Mid$(strBuf, InStr(strBuf, ",") + 1) DoEvents Loop strData = strData & "'" & strQuote(Trim$(strBuf)) & "'" lngRet = dbOra.DbExecuteSQL(strSQL & " (" & strData & ")") 'DoEvents Loop sesOra.CommitTrans blnRet = True exitInsertData: On Error Resume Next Close #intFno ' lblInsert.Caption = "設定完了" ImportData = blnRet Exit Function errInsertData: If sesOra.LastServerErr = 0 Then If dbOra.LastServerErr = 0 Then strErrText = Error$ Else strErrText = dbOra.LastServerErrText dbOra.LastServerErrReset End If Else strErrText = sesOra.LastServerErrText sesOra.LastServerErrReset End If MsgBox strErrText, vbOKOnly + vbExclamation, "Error" Resume exitInsertData: Resume Next End Function Private Function strQuote(ByVal vstrItem As String) As String Dim strWork As String strWork = "" Do While InStr(vstrItem, "'") > 0 strWork = strWork & Left$(vstrItem, InStr(vstrItem, "'") - 1) & "''" vstrItem = Mid$(vstrItem, InStr(vstrItem, "'") + 1) DoEvents Loop strQuote = strWork & vstrItem End Function このような場合のSQLでは配列化は可能でしょうか? よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.