Access - Gravar imagem usando Stored Procedure

Pergunta Access - Gravar imagem usando Stored Procedure

  • sexta-feira, 3 de agosto de 2012 18:44
     
      Contém Código

    Estou tentando usar uma stored Procedure para salvar registros e um dos campos é uma imagem.

    O valor da strEmpregado está sendo obtido da seguinte maneira:

    Private Function montaSTR() As String
    Dim strSQL As String
        
        strSQL = lng_IDempregado _ 
        & ";" & Me.txt_matricula _
        & ";" & Me.txt_nomeEmpregado _
        .
    
        & ";" & strNomeImagem
        
        Set mstream = New ADODB.Stream
        mstream.Type = adTypeBinary
        mstream.Open
    
        mstream.LoadFromFile Me.pic_Imagem.Picture
        strSQL = strSQL & ";" & mstream.Read
        
        montaSTR = strSQL
    
    If sp_AtualizaEmpregado(strEmpregado) = True Then
                 mens = "Empregado atualizado com sucesso."
                Dialog.Box Prompt:=mens, Buttons:=vbOKOnly + vbInformation, Title:="Atualização de Empregado", btnMsg:=False
            End If
        
    


    Public Function sp_AtualizaEmpregado(strEmpregado As String) As Boolean
    On Error GoTo Err_sp_AtualizaEmpregado
    Dim cn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim strVAL() As String
        
        Set cn = CurrentProject.Connection
        
        strVAL = Split(strEmpregado, ";")   
        
        With cmd    
            .ActiveConnection = cn
            .CommandType = adCmdStoredProc   
            .Parameters.Append cmd.CreateParameter("@id_Empregado", adBigInt, adParamInput, , strVAL(0))
            .
            .
            .
            .Parameters.Append cmd.CreateParameter("@nomeDaFoto", adVarChar, adParamInput, 100, strVAL(36))
            .Parameters.Append cmd.CreateParameter("@foto", adVarBinary, adParamInput, , strVAL(37))
        
            .CommandText = "sp_AtualizaEmpregado"
            
        End With
        
        cmd.Execute
        
        sp_AtualizaEmpregado = True
        
        Set cn = Nothing
        
        
    Exit_sp_AtualizaEmpregado:
        Exit Function
        
    Err_sp_AtualizaEmpregado:
        Dialog.Box Prompt:="Erro: " & Err.Number & vbCrLf & Err.Description, Buttons:=vbOKOnly + vbCritical, Title:="Erro - Atuzalizar empregado", btnMsg:=False
        sp_AtualizaEmpregado = False
        Resume Exit_sp_AtualizaEmpregado
    End Function
    
    

    Ao atribuir o valor binário para o parâmetro está apresentando o seguinte erro:


    [b]Sergio Ivanenko[/b]