Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Caminho da imagem no BD


dan_visualdm

Pergunta

olá pessoall!!

em meu projeto estou precisando inserir imagens no cadastro, porém pro BD não ficar pesado pensei em colocar somente o caminho da imagem no BD...

então fiz o seguinte:

1. Coloquei os seguintes componentes: popmenu1, OpenPictureDialog1, DBImage1;

2. Fiz as conexões do DBImage com o Banco de Dados;

3. No popmenu coloquei a opçao Procurar imagem..., dei um duplo clique, e coloquei o seguinte:

var
Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin

if OpenPictureDialog1.Execute then
begin
self.tbl_imagem.Edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
dbimage1.Picture.SaveToFile(diretorio);
tbl_imagem.AsString := diretorio;
self.tbl_imagem.Post;
DbImage1.Picture.LoadFromFile( tbl_imagem.imagem.AsString );
end;
end;
mas a hora que vou rodar o sistema da erro... o seguinte: na linha:
self.tbl_imagem.Edit;

e aparece a seguinte mensagem:

undeclared identifier: 'tbl_imagem'

o que estou fazendo de errado??

obrigado!

Editado por dan_visualdm
Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0
mas a hora que vou rodar o sistema da erro... o seguinte:

na linha:

self.tbl_imagem.Edit;
e aparece a seguinte mensagem: undeclared identifier: 'tbl_imagem'
dan_viisualdm, a mensagem é bem clara: tbl_imagem não é um identificador declarado, ou seja, não está declarado em lugar algum do seu form. Ou se está em um datamodule, você deve prefixar o nome do dataset com o nome do mesmo: <nome_datamodule>.<nome_dataset> No seu código tem duas formas como você usa ele: self.tbl_imagem.Edit; e tbl_imagem.AsString := diretorio; Independente de estar ou não declarado, já há um outro erro ai. Em uma situação você o trata como um dataset e na outra você o trata como um field. Imagino também que este seu código seja apenas um teste, pois não está fazendo muito sentido você usar um DBImage para carregar uma imagem e salvá-la em outro lugar. Este componente pressupõe o armazenamento da imagem no bando de dados, mas você diz que guarda o caminho. Então, de dois um: ou você tem os dois campos, um para guardar a imagem e outro o caminho, ou você está tentando guardar a imagem onde deveria guardar o caminho. Se você vai guardar apenas o caminho, seria mais apropriado você usar um TImage e usar o método LoadFromFile para mostrá-lo na tela e gravar no campo da tabela apenas o caminho, como aparentemente você o faz. Supondo que o dataset chama-se tbl_imagem e o campo que guarda o caminho seja CaminhoImg, o exemplo ficaria assim:
var
  Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin
  if OpenPictureDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
    tbl_imagem.Edit;
    tbl_imagem.CaminhoImg.AsString := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    tbl_imagem.Post;
  end;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

olá amigo...

fiaz as alterações que voce me passou e mudei umas coisas aqui e ficou assim:

var
  Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin
  if OpenPictureDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
    ADOQuery1.Edit;
    ADOQuery1.imagem.AsString := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    ADOQuery1.Post;
  end;
end;[code]

mas na hora de rodar da erro nessa linhas:

[code]ADOQuery1.imagem.AsString := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);

da aquele erro anterior, falando que "imagem" não foi definido... mas dentro da minha tablea, tem o campo imagem, e é nele que o caminho da imagem vai ficar...

porque desse erro?

Link para o comentário
Compartilhar em outros sites

  • 0
da aquele erro anterior, falando que "imagem" não foi definido... mas dentro da minha tablea, tem o campo imagem, e é nele que o caminho da imagem vai ficar...
Agora fica mais fácil de dizer algo a respeito...

Voce pode acessar o valor de um field basicamente de duas formas. Se você adicionou os campos do dataset em design-time, então você deverá ter uma variável criada no seu form que é composta pela concatenação do nome do dataset e o do campo. Neste caso deveria ser ADOQuery1Imagem:

ADOQuery1Imagem.AsString := 'C:\teste\imagens\'+ ....

Já se você não adicionou os campos em design-time, então você apenas o terá disponível em run-time, após o dataset ser aberto. Neste caso para acessar um campo você pode usar o método FieldByName(<nome do campo>) ou a propriedade Fields[<índice do campo>]:

ADOQuery1.Fields.FieldByName('Imagem').AsString := 'C:\teste\imagens\'+ .... (melhor método)

ou

ADOQuery1.Fields[1].AsString := 'C:\teste\imagens\'+ .... (supondo que o campo Imagem seja o 2º campo na lista de fields

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

olá amigo!!

agora entendi, usei a primeira opção que você me falou e deu certinho...

so que usanto o Timagem, como eu vou relacionar isso com o BD (access)..?

porque eu preciso que cada cadastro tenha a sua imagem, isso pra começar... porque na verdade depois eu vou precisar, pra um mesmo cadatro ter várias imagens....

então quando eu mudar o cadastro a imagem tem q mudar junto e nesse caso ele não muda...

obrigado!!! e um otimo domingo!!

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
so que usanto o Timagem, como eu vou relacionar isso com o BD (access)..?

porque eu preciso que cada cadastro tenha a sua imagem, isso pra começar... porque na verdade depois eu vou precisar, pra um mesmo cadatro ter várias imagens....

dan_visualdm, voce começou o tópico dizendo que não queria do modo que você informa agora. :huh:

em meu projeto estou precisando inserir imagens no cadastro, porém pro BD não ficar pesado pensei em colocar somente o caminho da imagem no BD...

Se você vai mesmo gravar a imagem no DB ao invés do seu caminho, então, você vai mesmo usar um DBImage e a ele deverá estar associado um campo do tipo ObjetoOLE do seu dataset.

No código que você está usando, vai trocar o TImage por TDBImage e neste caso, o dataset deverá estar em edição antes da atribuição:

var
  Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin
  if OpenPictureDialog1.Execute then
  begin
    ADOQuery1.Edit;
    DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
    ADOQuery1.Post;
  end;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

olá amigo, acho que não soube me expressar direito... desculpe!

na verdade é o seguinte...

em meu BD eu quero que fique gravado apenas o caminho da imagem e não aimagem... porém cada cadastro terá a sua imagem... por exemlo a imagem01.jpg tera que estar relacionado com o cliente A a imagem02.jpg com o cliente B... assim por diante...

na programação acima a imagem fica aparecendo mas se eu mudar pro cliente 2 não muda a imagem...

não sei se consegui me explicar...

obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
olá amigo, acho que não soube me expressar direito... desculpe!

na verdade é o seguinte...

em meu BD eu quero que fique gravado apenas o caminho da imagem e não aimagem... porém cada cadastro terá a sua imagem... por exemlo a imagem01.jpg tera que estar relacionado com o cliente A a imagem02.jpg com o cliente B... assim por diante...

dan_visualdm, com isto voltamos ao post#5 onde você já tinha entendido aquela parte - Vamos continuar de lá então.

Como você está guardando o caminho+nome da imagem a ser mostrada, então você tem que carregar a imagem daquele lugar quando quiser mostrá-la. O processo é praticamente o mesmo que você já usou para selecionar a imagem e gravar sua informação no banco. A diferença é que agora, você tem a informação do banco e quer mostrar a imagem baseado nesta informação.

Eu não sei como você está fazendo a leitura das informações no cadastro para mostrá-la, mas no momento em que você fizer isto, é o momento em que você deverá ler a imagem e mostrar na tela. Assim, você deveria acrescentar o código +/- como abaixo:

...
  if ADOQuery1.imagem.AsString <> '' then
    if FileExists(ADOQuery1.imagem.AsString) then
      Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename)
    else
      ShowMessage(Format('A imagem não existe no local especificado: "%s"', [ADOQuery1.imagem.AsString]));
...
end;

Fazemos uma verificação se foi atribuida alguma imagem ao campo que guarda esta informação. Uma vez que tenha sido, verificamos se o arquivo existe e então a carregamos para o TImage ou, do contrário, mostramos uma mensagem ao usuário informando que aquele arquivo ou caminho não são válidos.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

ixi amigo... não tah facil aqui...

o que tem de errado?

tem 3 problemas:

- quando eu insiro a imagem o atualizar num funciona (estou testando com o DB Navigator), é como se nada tivesse sido inserido no BD.

- fiz um botao voltar e um avançar. a ideia é quando eu colocar a foto do cliente 1 ficar pra ele a foto, eu quando eu for pro cliente 2 a foto mudar pra do cliente 2... mas não acontece isso...

- eu insiro a imagem para o cliente 1... só que se eu fechar o sistema e abrir dinovo, a foto não está mais lá:

como estao meus codigos:

no botao inserir foto:

begin
  if OpenPictureDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
    ADOQuery1.Edit;
    ADOQuery1.Fields.FieldByName('Imagem').AsString := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    ADOQuery1.Post;
  end;
end;
nos botoes: anterior e proximo:
begin
if ADOQuery1.Fields.FieldByName('Imagem').AsString <> '' then begin
    if FileExists(ADOQuery1.fields.fieldbyname('imagem').AsString) then
      Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename)  end;
       begin
      ADOQuery1.next;
      end;  end;

obrigado!

Editado por dan_visualdm
Link para o comentário
Compartilhar em outros sites

  • 0

dan_visualdm, desculpe minha desatenção. O erro foi meu. :blush:

Esqueci de substituir OpenPictureDialog1.Filename na chamada de LoadFromFile. Corrija como abaixo, mas observe que se você usa o mesmo comando para os dois botões como você disse, para um deles você tem que fazer a função do voltar usando o Prior:

begin
  if ADOQuery1.Fields.FieldByName('Imagem').AsString <> '' then
    if FileExists(ADOQuery1.fields.fieldbyname('imagem').AsString) then
      Image1.Picture.LoadFromFile(ADOQuery1.fields.fieldbyname('imagem').AsString)  end;

  ADOQuery1.Next;  // esta opção é para o próximo
//  ADOQuery1.Prior;  // este é para o anterior
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

poxa amigo...

está estranho isso aqui, o bd ficou louco...

a imagem que esta configurado pra o 2 quando muda pro 3 continua, e só muda se eu clicar dinovo em proximo...

não estou entendendo...

bom, o exemplo que estou montando pra tentar entender esta aqui:

http://www.visualdm.net/dan/teste.rar

obrigado pelas ajudas!!

abraçoss

Link para o comentário
Compartilhar em outros sites

  • 0
está estranho isso aqui, o bd ficou louco...

a imagem que esta configurado pra o 2 quando muda pro 3 continua, e só muda se eu clicar dinovo em proximo...

não estou entendendo...

Vixe, estou ficando loco e ninguém me corrige. :wacko:

Tem que acontecer isto mesmo, afinal corrigi o meu erro mas não me "antenei" na movimentação do dataset. Voce só pode carregar a imagem, depois de ter movido o registro:

begin
  ADOQuery1.Next;  // esta opção é para o próximo
//  ADOQuery1.Prior;  // este é para o anterior
  if ADOQuery1.Fields.FieldByName('Imagem').AsString <> '' then
    if FileExists(ADOQuery1.fields.fieldbyname('imagem').AsString) then
      Image1.Picture.LoadFromFile(ADOQuery1.fields.fieldbyname('imagem').AsString)  end;
end;

ou seja, primeiro movimenta o dataset (Next ou Prior) e depois, já posicionado no novo registro, é que carrega a imagem atualmente selecionada.

Mais um vez, desculpe-me.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

que isso, desculpe eu de tantas perguntas! :wacko:

agora funcionou certinho!! era exatamente isso que eu precisava!!! brigadao!!!

bom.... na verdade eu preciso de mais 2 coisinhas! =//

- vamos supor que a imagem esteja na Desktop... ai eu busco ela e tal... mas como fazer o sistema fazer uma cópia dessa imagem pra o c:/listagem/imagem ?

- como fazer o sistema redimencionar sozinho qualquer imagem inserida pra 480 x 360?

mais uma vez obrigado!! :blush:

Link para o comentário
Compartilhar em outros sites

  • 0
bom.... na verdade eu preciso de mais 2 coisinhas! =//

- vamos supor que a imagem esteja na Desktop... ai eu busco ela e tal... mas como fazer o sistema fazer uma cópia dessa imagem pra o c:/listagem/imagem ?

dan_visualdm, a cópia pura e simples, pode ser feita utilizando a função da API CopyFile:

BOOL CopyFile(
    LPCTSTR lpExistingFileName,    // pointer to name of an existing file 
    LPCTSTR lpNewFileName,    // pointer to filename to copy to 
    BOOL bFailIfExists     // flag for operation if file exists 
   );
usando...
...
var
  Sobrescreve :Boolean;
  Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin
  if OpenPictureDialog1.Execute then
  begin
    Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    if FileExits(Diretório) then
      Sobrescreve := MessageDlg('O arquivo já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbOk, mbYes], 0) = mrYes
    CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);

    Image1.Picture.LoadFromFile(Diretorio);
    tbl_imagem.Edit;
    tbl_imagem.CaminhoImg.AsString := Diretorio;
    tbl_imagem.Post;
  end;
end;

Isto deve funcionar (se não esqueci de nada denovo rsrsrs)

mas,...

- como fazer o sistema redimencionar sozinho qualquer imagem inserida pra 480 x 360?
aqui fica uma perguntinha extra: E por acaso você pretende armazenar as imagens no formato em que são copiadas (original) ou vai gravar sempre em .jpg, por ex.?

Há um tempo fiz este post aqui no forum para gerar os thumbnail (miniaturas do tamanho especificado mantendo o aspecto).

Já com relação a conversão para .jpg, tem uma função neste outro post.

Assim, dá para combinar tudo isto ser for necessário.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

vou fazer os testes aqui...

bom, na verdade até então eu pretendia deixar a imagem no formato original dela... mas acredito que convertendo pra JPG vai facilitar muito minha vida, até porque depois eu vou utilizar essas imagem na web... (e o mesmo banco em ASP)...

bom, nesse caso é recomendavel copiar pra pasta e já converter em .jpg mesmo né? acho que até porque dai fica tudo padronizado e como vai ter muita imagem fica mais leve pra fazer o backup...

Link para o comentário
Compartilhar em outros sites

  • 0

COMENTARIO: (é que tinha dado um probleminha aqui, ai pesquisando descobri como resolver... então achei interessante postar aqui no tópico, porque acho que um dia possa ser util pra alguém...)

Bom.... depois de tudo, as cosias estavam indo bem, ate eu precisar cadastrar um novo carinha... rs...

o problema estava quando ia fazer um novo cadastro, a ultima imagem ficava aparecendo no TImage (porem o caminho não fica no banco de dados)...

então fiz o seguinte, no botao INSERT:

ADOQuery1.Insert;
   Image1.Picture.Bitmap := Nil;[code] 

até ai beleza, então surgiu mais um porém...

Vamos supor que eu cadastre esse novo cliente mas não vou querer colocar nenhuma foto pra ele. Tudo bem, não coloco foto e então gravo os registro e beleza... 

- Problema: se eu não cadastrei para esse cliente (6) uma imagem... ai então estou no cliente 5 e quando clico no Next... a imagem no cliente 5 permanece para o cliente 6 (que não deveria ter nenhuma imagem cadastrada)...

então mais uma vez usei o [code]  Image1.Picture.Bitmap := Nil;
ai então meu Next ficou assm:
begin
  ADOQuery1.Next;
  Image1.Picture.Bitmap := Nil;
  if ADOQuery1.Fields.FieldByName('Imagem').AsString <> '' then
    if FileExists(ADOQuery1.fields.fieldbyname('imagem').AsString) then
      Image1.Picture.LoadFromFile(ADOQuery1.fields.fieldbyname('imagem').AsString)
end;

* e a mesmo cosa pro Prior...

ae td beleza... :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
bom.... na verdade eu preciso de mais 2 coisinhas! =//

- vamos supor que a imagem esteja na Desktop... ai eu busco ela e tal... mas como fazer o sistema fazer uma cópia dessa imagem pra o c:/listagem/imagem ?

dan_visualdm, a cópia pura e simples, pode ser feita utilizando a função da API CopyFile:

BOOL CopyFile(
    LPCTSTR lpExistingFileName,    // pointer to name of an existing file 
    LPCTSTR lpNewFileName,    // pointer to filename to copy to 
    BOOL bFailIfExists     // flag for operation if file exists 
   );
usando...
...
var
  Sobrescreve :Boolean;
  Diretorio : String; {caminho aonde vai ficar salvo as imagens}
begin
  if OpenPictureDialog1.Execute then
  begin
    Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    if FileExits(Diretório) then
      Sobrescreve := MessageDlg('O arquivo já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbOk, mbYes], 0) = mrYes
    CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);

    Image1.Picture.LoadFromFile(Diretorio);
    tbl_imagem.Edit;
    tbl_imagem.CaminhoImg.AsString := Diretorio;
    tbl_imagem.Post;
  end;
end;
Isto deve funcionar (se não esqueci de nada denovo rsrsrs) mas,...
- como fazer o sistema redimencionar sozinho qualquer imagem inserida pra 480 x 360?
aqui fica uma perguntinha extra: E por acaso você pretende armazenar as imagens no formato em que são copiadas (original) ou vai gravar sempre em .jpg, por ex.? Há um tempo fiz este post aqui no forum para gerar os thumbnail (miniaturas do tamanho especificado mantendo o aspecto). Já com relação a conversão para .jpg, tem uma função neste outro post. Assim, dá para combinar tudo isto ser for necessário. Abraços
ixi... deu 2 erros aqui: veja como montei:
var
  Sobrescreve :Boolean;
  Diretorio : String;
begin
  if OpenPictureDialog1.Execute then
  begin
    Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    if FileExists(Diretorio) then
      Sobrescreve := MessageDlg('O arquivo já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbOk, mbYes], 0) = mrYes;
    CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);

    f_incluir_imoveis.Image1.Picture.LoadFromFile(Diretorio);
    dm.t_fotos.Edit;
    dm.t_fotos.CaminhoImg.AsString := Diretorio;
    dm.t_fotos.Post;
  end;
end
OS ERROS:
CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);
erro apresentado: Incompatible types: 'TFileName' and 'PAnsiChar' Incompatible types: 'String' and 'PAnsiChar' ... e depois tem mais esse erro:
dm.t_fotos.CaminhoImg.AsString := Diretorio;

erro apresentado:

Undeclared identifir: 'CaminhoImg'

como resolver isso?

obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
ixi... deu 2 erros aqui:

veja como montei:

var
  Sobrescreve :Boolean;
  Diretorio : String;
begin
  if OpenPictureDialog1.Execute then
  begin
    Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    if FileExists(Diretorio) then
      Sobrescreve := MessageDlg('O arquivo já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbOk, mbYes], 0) = mrYes;
    CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);

    f_incluir_imoveis.Image1.Picture.LoadFromFile(Diretorio);
    dm.t_fotos.Edit;
    dm.t_fotos.CaminhoImg.AsString := Diretorio;
    dm.t_fotos.Post;
  end;
end
OS ERROS:
CopyFile(OpenPictureDialog1.FileName, Diretorio, Sobrescreve);
erro apresentado: Incompatible types: 'TFileName' and 'PAnsiChar' Incompatible types: 'String' and 'PAnsiChar'
O erro é porque a função espera um PAnsiChar como parâmetro, então, definimos duas variáveis do tipo ponteiro para caracter e movemos a string para ela usando a função StrPCopy (se não troquei o nome):
var
  Origem,  // <== ****
  Destino :array[0..512] of Char;  // <== ****
  Sobrescreve :Boolean;
  Diretorio : String;
begin
  if OpenPictureDialog1.Execute then
  begin
    Diretorio := 'C:\teste\imagens\'+ ExtractFileName(OpenPictureDialog1.FileName);
    if FileExists(Diretorio) then
      Sobrescreve := MessageDlg('O arquivo já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbOk, mbYes], 0) = mrYes;
    
    StrPCopy(Origem, OpenPictureDialog1.FileName);  // <== ****
    StrPCopy(Destino, Diretorio);  // <== ****
    CopyFile(Origem, Destino, Sobrescreve);

    f_incluir_imoveis.Image1.Picture.LoadFromFile(Diretorio);
    dm.t_fotos.Edit;
    dm.t_fotosCaminhoImg.AsString := Diretorio;  // < === *** supondo nome campo CaminhoImg
    dm.t_fotos.Post;
  end;
end
... e depois tem mais esse erro:
dm.t_fotos.CaminhoImg.AsString := Diretorio;

erro apresentado:

Undeclared identifir: 'CaminhoImg'

Vixe!!! Eu errei e você ainda não aprendeu o que já falamos no início - post#4 (veja o post).

Lembra que por lá já falei que podemos acessar o campo de diferentes modos - mas não da forma como está:

tbl_imagem.Fields.FieldByName('CaminhoImg').AsString

tbl_imagemCaminhoImg.AsString

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

verdade mesmo, nem reparei naquele erro.... mallzzz... :blush:

bom, agora esta quase funcionando... ele já está copiando para o diretório e tambem pergunta se deseja substituir (caso tenha uma imagem com esse nome)... porém se você cliar em SIM ou não pra substituir aprensenta o seguinte erro:

- t_fotos: Fiel 'CaminhoImg' not found.

ah... tem mais um aviso aqui...

-- Variable 'Sobrescreve' might not have been initialized

mais uma vez... obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
... porém se você cliar em SIM ou não pra substituir aprensenta o seguinte erro:

- t_fotos: Fiel 'CaminhoImg' not found.

dan_visualdm, sobre este erro, poderia dizer algo similar ao que disse antes e você respondeu com
verdade mesmo, nem reparei naquele erro.... mallzzz... :blush:

Qual é mesmo o nome do seu campo que guarda a imagem?

Lá no post #2 eu já dizia:

Supondo que o dataset chama-se tbl_imagem e o campo que guarda o caminho seja CaminhoImg, o exemplo ficaria assim
não sei porque você voltou a usar aquele nome de campo, quando posteriormente você disse que ele chamava-se apenas Imagem como nos posts recentes, quando você usou: ADOQuery1.Fields.FieldByName('Imagem').AsString

Eu apenas tento ajudar em questões da logica e comandos, mas não posso garantir detalhes como nome de componentes e campos os quais não tenho em minhas mãos (só você sabe o que está fazendo - eu trabalho com o que você posta aqui). ;)

ah... tem mais um aviso aqui...

-- Variable 'Sobrescreve' might not have been initialized

Este é mesmo apenas um aviso. Ele é mostrado porque, se você observar bem, há uma condição para que a variável seja inicializada que é quando a resposta é sim.

Ela é apenas um alerta, cabendo apenas a verificação e correção caso seja necessário. Neste caso, bastaria que você acrescentar a atribuição à variável no else do if (o qual não usei no exemplo). O fato de eu não ter feito a inicialização nesta condição deve-se ao fato de que não existindo a imagem, pouco importa o valor da variável, se verdadeira ou falsa, a imagem deverá ser gravada de qualquer forma!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

poxa... que vergonhaa!!! =///

me desculpe!

agora esta funcionando corretamente!

obrigado! :unsure: :blush:

bom, só pra deixar aqui.. (pode ser que venha ajudar mais alguém...)

não sei porque ele não achava arquivos quando era .JPG

então resolvi da seguinte forma:

fui no meu form principal e na cláusula USES inclui JPEG

ai pronto... agora ele acha as benditas imagens em JPG e/ou JPEG

espero que possa ajudar!

abraços!

Editado por dan_visualdm
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...