GRAVAR IMAGEM NO CAMPO DO TIPO VARBINARY.

JLAUROSOUZA 03/02/2011 20:43:03
#364292
Amigos, eu já Gravo e Leio Imagem no Campo do Tipo [Ô]image[Ô], mais naum sei como Grava e Lêr no do tipo [Ô]varbinary[Ô].

Motivo: Eu trabalho com o SQL-Sever e nele utilizo uma Tigger para Log de Banco, mais a Tigger naum suporta do tipo [Ô]image[Ô], ja consultei na net e o q ví em todos os tópicos que encontrei é que eu tenho q muda para o tipo [Ô]varbinary[Ô], fiz isso diretamente dentro do banco, e deu certo, os dados já existentes foram convertidos sem problema, adicionei na minha Tigger o campo do tipo [Ô]varbinary[Ô] e esta funcionando direitinho, e ate a consulta pelo sistema esta funcionando, só que quando vou grava uma nova imagem, naum funciona da incompatibilidade de tipo.

Aki vai o código q utilizo para grava a imagem.

Function SalvaImagem(xID As String) As Boolean

Dim oTabela As ADODB.Recordset
Set oTabela = New ADODB.Recordset

oTabela.Source = [Ô]Select * from [Ô] & xTabelaSecundaria & [Ô] where ID =[ô][Ô] & xID & [Ô][ô][Ô]
oTabela.Open , cn, adOpenDynamic, adLockOptimistic

[ô]Parâmetros obrigatórios:
[ô] - oTabela = Objeto Recordset aberto e em uso, onde deverá ser gravada a imagem.
[ô] - CampoImagem = Var. String, com o nome do campo onde a imagem deve ser armazenada.
[ô] - ArquivoImagem = Var. String, com o caminho e o nome do arquivo de imagem á ser salva.
[ô]Retornos: True/False, indicando sucesso ou falha na gravação do campo.
On Error GoTo SIErr:
Dim lRet As Boolean [ô]variável para retorno
Dim oStream As ADODB.Stream [ô]variável para o Stream da imagem (algo como [Ô]imagem de arquivo em memória[Ô])
lRet = True [ô]vai funcionar, retorna verdadeiro
Set oStream = New ADODB.Stream [ô]instancia a var. do Stream (cria instância ativa)
With oStream
.Type = adTypeBinary [ô]tipo da leitura, para campos Image/BLOB/OLEDB deve ser binário
.Open [ô]abre arquivo (memória)
.LoadFromFile xCaminhoArquivo [ô]carrega desde o arquivo físico
oTabela.Update
oTabela.Fields([Ô]imagem[Ô]).Value = .Read [ô]atribui o conteúdo ao campo passado como referência
oTabela.Update [ô]salva a informação.
.Close [ô]e fecha o arquivo, para permitir que seja eliminado, claro.
End With
GoTo SIExit: [ô]se chegou até aqui, ok.
SIErr:
MsgBox Err.Description [ô]mostra erro - desnecessário, se você tratar o retorno da função.
Err.Clear [ô]limpa a matriz de erros
lRet = False [ô]retorna falso
SIExit:
SalvaImagem = lRet [ô]Envia o retorno da função
Set oStream = Nothing [ô]limpa a instância ativa, eliminando o espaço ocupado pela variável.
lRet = Empty [ô]idem, para a var. de retorno.
End Function

ESTE CÓDIGO FUNCIONA PERFEITAMENTE PARA O CAMPO DO TIPO [Ô]IMAGE[Ô], MAIS DA INCONSISTÊNCIA NO TIPO [Ô]VARBINARY[Ô].

ENTAO AMIGOS ALGUEM TEM ALGUMA IDéIA DE COMO FAÇO ISSO?
JLAUROSOUZA 04/02/2011 11:57:12
#364335
SERÁ Q NINGUEM AKI DO VBMANIA, NAUM SABE ME DA UMA EXPLICAÇÃO SOBRE ISSO?
JLAUROSOUZA 04/02/2011 19:25:10
#364377
Amigos de VBMANIA, pelo menos me fale se isso que eu estou querendo é possivel, pq se naum for possivel eu naum vou quebrar mais minha kbça, agora se for, vou ter q resolver!!!.

POR FAVOR ALGUEM!!!
XXXANGELSXXX 04/02/2011 19:38:20
#364379
Deixa eu te pergunta.r. qual é o banco de dados que vc ta usando? porque voce nao deixa o campo como tipo blob?????
JLAUROSOUZA 04/02/2011 20:01:38
#364382
AMIGO O BANCO é SQL-SERVER COM OEU JA HAVIA FALADO ANTES, E O TIPO BLOB, ESSE TIPO NAUM EXISTE NO BANCO A VERSÃO é A 2000, AINDA ESTOU MIGRANDO PARA A 2008, E COMO NAUM POSSO FAZER TUDO DE UMA SÓ VEZ, AINDA UTILIZO O 2000, O TIPO VERBINARY é O UNICO QUE PODE ME AJUDAR.

VALEU O TOQUE ANGEL, MAIS INFELIZMENTE NAUM ME AJUDA, MESMO ASSIM AGRADEÇO O ESFORÇO.
XXXANGELSXXX 04/02/2011 21:24:55
#364390
Me desculpe amigo, realmente nao cheguei a ler que era sql-server, eu nao trabalho com sql, somente mysql e oracle.. mas.. boa sorte.. rsrs.. vou ver com uns amigos meus..
JLAUROSOUZA 04/02/2011 21:57:05
#364399
Ok Amigo Angel, mais uma vez Agradeço sua Ajuda!!!
Tópico encerrado , respostas não são mais permitidas