ADO Stream Concert转换为二进制

时间:2018-11-22 00:20:09

标签: excel vba excel-vba

这是我使用VBA将文件上传到数据库的代码,但是此循环只能运行一次。在第二个循环中,它将给出错误,错误是

  

在此情况下不允许操作

有人可以建议我怎么做吗? 错误在adoStream.Type = adTypeBinary

行中
Dim stCon As String 'SQL Connection string
Dim stProcName As String 'Stored Procedure name

Dim strCmd As String

Dim adoStream               As Object
Dim adocmd                  As Object
Dim strFilePath             As String
Dim adoCon                  As Object

Set adoCon = CreateObject("ADODB.Connection")
Set adoStream = CreateObject("ADODB.Stream")
Set adocmd = CreateObject("ADODB.Command")

adoCon.CursorLocation = adUseClient
adoCon.Open "Provider=SQLOLEDB; " & _
            "Data Source=#########; " & _
            "Initial Catalog=#######;" & _
            "User ID=#######; Password=########;"

For Each fl In fld.Files    
    If fl.name Like Mask Then
        strInput = fl.name
        strFilePath = fld.path & "\" & fl.name

        MsgBox (strFilePath)

        adoStream.Type = adTypeBinary
        adoStream.Open
        adoStream.LoadFromFile strFilePath 'It fails if file is open

        With adocmd 
            .CommandText = "INSERT INTO dbo.coc_upload(Data) " & _
                           "VALUES (?)"
            .CommandType = adCmdText
            '---adding parameters
            .Parameters.Append .CreateParameter("@Data", adVarBinary, adParamInput, adoStream.Size, adoStream.Read)
            '---
        End With

        adocmd.ActiveConnection = adoCon
        adocmd.Execute
        adoCon.Close

        MsgBox ("Done")    
    End If      
Next    

0 个答案:

没有答案