jean_bhz Postado Abril 8, 2021 Denunciar Share Postado Abril 8, 2021 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 8, 2021 Denunciar Share Postado Abril 8, 2021 Qual é o banco de dados ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jean_bhz Postado Abril 8, 2021 Autor Denunciar Share Postado Abril 8, 2021 Bom dia, Jhonas. SQL Obg. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 8, 2021 Denunciar Share Postado Abril 8, 2021 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jean_bhz Postado Abril 8, 2021 Autor Denunciar Share Postado Abril 8, 2021 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 8, 2021 Denunciar Share Postado Abril 8, 2021 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jean_bhz
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 para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.