Fórum Campo Varchar com Path para imagem #26656

05/12/2006

0

Bom dia, pessoal

Tenho um banco em postgreSQL. Uma tabela armazena o codigo do cliente e o caminho para o arquivo com a imagem desse cliente.

O problema eh que qd o programa grava o caminho para a foto, na tabela, ele perde alguns caracteres.

Por exemplo. Se o programa passa a string c:\fotos\img001.jpg, o banco grava como cfotos@001.jpg. Ou seja, ele faz um rebosteio só! A base esta codificada como SQL_ASCII, mas ja testei com o UTF8 e deu o mesmo problema.

Alguem sabe como eu posso gravar um path para um arquivo no banco sem que ele perca os caracteres?

Abraços

Silvio Ribeiro


Silvio Ribeiro

Silvio Ribeiro

Responder

Posts

06/12/2006

Andersonpgsql

Boa tarde...não sei se entendi direito...vc ta usando um código ou um campo edit ou dbedit pra capturar o caminho e salvar??? pois fis aqui com um campo dbedit e com um edit e nos dois casos ficaram serto da mesma forma que digitei no sis ficou no banco???, me desculpe se entendi errado mas se vc puder ser um pouco mais especifico quanto ao erro, talvez algun de nos membro do forum possa te ajudar mais...


Responder

Gostei + 0

06/12/2006

Silvio Ribeiro

Obrigado pelo retorno, Anderson. Tentarei ser mais claro.

Estou usando Delphi 7, PSQL 8.1 e o PostgresDAC para o acesso a dados direto.

No meu form tem um componente Image pra mostrar as fotos e um OpenPictureDialog. Tem um button pra chamar a caixa de dialogo de selecao de imagem. Qd o usuario seleciona a imagem ele pega o OpenPictureDialog1.Filename e joga para o campo pathfotos na tabela FOTOS.

Essa tabela eh composta pelos seguintes campos:

idfoto serial,
idcliente integer,
pathfoto varchar(255).


O processo q uso pra gravar no banco eh o seguinte: qd a pessoa selecionou a imagem no openpicturedialog e pressionou o botao ok ai ele grava a foto na tabela:

tblFotos.append;
tblFotos.FieldByName(´IDCLIENTE´).AsInteger := idcliente;
tblFotos.FieldByName(´PATHFOTO´).AsString := openPictureDialog1.FileName;
tblFotos.post;


Fazendo a depuracao nesse trecho, observei que a string com o path da foto esta sendo gravada corretamente no banco, ou seja, se eu selecionar uma imagem IMG001.JPG na pasta c:\fotos, ele grava no banco a string C:\FOTOS\IMG001.JPG.

Mas qd eu vou olha la na tabela pelo pgAdmin o registro gravado, ele mostra completamente diferente do que ele gravou. Primeiro ele remove todas as ´\´ do path do arquivo. Em algumas situacoes, no lugar da ´\´, ele coloca outro caracter, normalmente uma ´@´ e perde parte do nome do arquivo, entao ao inves de no banco aparecer assim:

[b:68113d4bee]C:\FOTOS\IMG001.JPG[/b:68113d4bee]

ele está aparecendo assim:

[b:68113d4bee]CFOTOS@001.JPG[/b:68113d4bee]

É como se o banco eliminasse os caracteres q ele nao suporta, ou algo parecido.... Nesse caso eu usaria o campo como VARCHAR mesmo ou teria outro tipo de banco para fazer isso?

Aguardo algum retorno,

grato,

Silvio Ribeiro
Joao Pessoa - PB


Responder

Gostei + 0

07/12/2006

Andersonpgsql

Bom dia...

eu ja usei esta paleta de conexão que vc esta usando no momento, mas percebi que ela tem alguns bug´s, no momento estou usando a conexao ado e um drive oldb e odbc...fiz algumas pequenas mudanças e ficou super rapido, mas não to querendo dizer que é este o problema...nesta parte não testei...aqui eu fiz o seguinte...[--usei um openpcturedialog, e dois botaos, só pra facilitar o código pra vc entender melhor, é coisa simples, pode se usar tanto um dbedito visible:=false, ou colocar direto no value do banco.

la vai o código...

ADOQuery1.Insert;
OpenPictureDialog1.Execute;
//Este
DBEdit2.Text:=OpenPictureDialog1.FileName;
//ou este tanto faz
ADOQuery1local_foto.Value:=OpenPictureDialog1.FileName;

como disse é muito simples o código, e salvou corretamente no banco.

ve se isso resolve, se não der certo vamos tentar de outra forma


Responder

Gostei + 0

19/01/2007

Daemon

..outro kit de componentes que eu tenho usado para a conexão com o banco e que vi que é muito bom é o Zeos ......


Responder

Gostei + 0

10/12/2008

Silvio Ribeiro

Para quem tem o mesmo problema que eu tive, consegui solucioná-lo adicionando outra ´\´ antes das ´\´ do path da foto.

Então se a foto esta no path
C:\Fotos\Imagem.JPG

gravei no banco PSQL assim:
C:\\Fotos\\Imagem.Jpg

Assim resolveu o problema ao gravar o path no banco postgreSQL.

Vlw


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar