jean_bhz 0 Posted Thursday at 01:25 PM Report Share Posted Thursday at 01:25 PM Prezados, bom dia! Tenho um form simples contendo um componente timage, especificamente image1. Já consegui fazer o loadfromfile buscando a imagem em c:, carregando o image1, funciona ok. Acontece que, após carregar o image1 não estou conseguindo gravar junto a um banco sql. Abaixo o código e sentença: procedure Tfprincipal.BitBtn1Click(Sender: TObject); var ximagem: tpicture; ADOConnection1.Connected := true; Image1.Picture.LoadFromFile('c:\projetos\ultra\img1.jpg'); ximagem := Image1.Picture; timagem.sql.clear; timagem.Sql.Add('INSERT INTO TIMAGEM(NUM_REFERENCIA,IMG_IMAGEM)VALUES'); timagem.sql.add('(''' + '123' + ''','''+ximagem+''')'); timagem.ExecSQL; Note que minha maneira de codificar é bem simples. ao compilar estou deparando com o erro: Incompatible types: 'String' and 'Timage' o campo na tabela sql está assim: Column Name Data Type Length Allow Nulls IMG_IMAGEM IMAGE 16 Então, o que necessito é conseguir gravar a imagem contida neste componente dentro da tabela. a carga da imagem está acontecendo corretamente. Muito obrigado. Quote Link to post Share on other sites
0 Jhonas 0 Posted Thursday at 01:49 PM Report Share Posted Thursday at 01:49 PM Qual é o banco de dados ? Quote Link to post Share on other sites
0 jean_bhz 0 Posted Thursday at 02:06 PM Author Report Share Posted Thursday at 02:06 PM Bom dia, Jhonas. SQL Obg. Quote Link to post Share on other sites
0 Jhonas 0 Posted Thursday at 02:24 PM Report Share Posted Thursday at 02:24 PM Experimente usar o tipo VARBINARY no lugar de IMAGE Veja esses links com exemplos de uso https://www.google.com.br/search?q=salvar+imagem+sql+server+delphi&source=hp&ei=mxFvYIiXC9LE5OUP4MO6mAE&iflsig=AINFCbYAAAAAYG8fq_OTf-D4XisKdpBsQoHBwJbYHbUG&o que=salvar+imagem+no+sql&gs_lcp=Cgdnd3Mtd2l6EAEYBjICCAAyAggAMgYIABAWEB4yBggAEBYQHjIGCAAQFhAeMgYIABAWEB4yBggAEBYQHjIGCAAQFhAeMgYIABAWEB4yBggAEBYQHjoICAAQsQMQgwE6BQguELEDOgUIABCxAzoOCAAQsQMQgwEQxwEQowI6CwgAELEDEMcBEKMCOggILhCxAxCTAjoICC4QsQMQgwE6CwguELEDEIMBEJMCOgsIABCxAxDHARCvAToECAAQAzoOCAAQsQMQgwEQxwEQrwE6CggAELEDEEYQ-QFQlg1YmixgunVoAXAAeACAAaEBiAHoFJIBBDAuMjCYAQCgAQGqAQdnd3Mtd2l6sAEA&sclient=gws-wiz Quote Link to post Share on other sites
0 jean_bhz 0 Posted Thursday at 02:51 PM Author Report Share Posted Thursday at 02:51 PM Vou ver. Muito obrigado, Jhonas. Bom dia, Boa Sorte! Jhonas! Acontece que o erro está ocorrendo ainda durante o processo da compilação, antes da escrita junto ao banco. var ximagem: tpicture; ximagem := Image1.Picture; timagem.sql.clear; timagem.Sql.Add('INSERT INTO TIMAGEM(NUM_REFERENCIA,IMG_IMAGEM)VALUES'); timagem.sql.add('(''' + '123' + ''','''+ximagem+''')'); timagem.ExecSQL; negritei, acima, a variável ximagem que é quem está causando o erro, ainda na compilação, com a mensagem: Incompatible types: 'String' and 'Timage' já alterei o tipo de campo junto ao banco, de image para varbinary, conforme voce orientou, mas ainda não consigo fazer o teste da escrita porcausa da compilação. Se puder me ajudar, novamente, ficarei muito grato! Imagino que tenho que converter a variavel ximagem, que é picture para string para, ai sim, dar certo na sentença sql. Porém não sei como fazê-lo. Obg. Quote Link to post Share on other sites
0 Jhonas 0 Posted Thursday at 04:13 PM Report Share Posted Thursday at 04:13 PM var ximagem: tpicture; Incompatible types: 'String' and 'Timage' Tipos incompativeis: String e Timage timagem.Sql.Add('INSERT INTO TIMAGEM(NUM_REFERENCIA,IMG_IMAGEM)VALUES'); timagem.sql.add('(''' + '123' + ''','''+ximagem+''')'); Obs: veja que voce está adicionando uma string ( 'ximagem' ) e não uma imagem observe os apostrofes Caso não tenha entendido.... Imagino que tenho que converter a variavel ximagem, que é picture para string para, ai sim, dar certo na sentença sql. se voce converter ximagem para string, vai continuar o erro, porque voce vai estar tentando gravar uma string num campo binario. Nos links que te passei tem exemplos de como gravar um foto no banco de dados Quote Link to post Share on other sites
Question
jean_bhz 0
Prezados, bom dia!
var ximagem: tpicture;
ADOConnection1.Connected := true;
timagem.sql.clear;
timagem.Sql.Add('INSERT INTO TIMAGEM(NUM_REFERENCIA,IMG_IMAGEM)VALUES');
timagem.sql.add('(''' + '123' + ''','''+ximagem+''')');
timagem.ExecSQL;
IMG_IMAGEM IMAGE 16
Link to post
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.