Fórum Campo Varchar com Path para imagem #26656
05/12/2006
0
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
Curtir tópico
+ 0Posts
06/12/2006
Andersonpgsql
Gostei + 0
06/12/2006
Silvio Ribeiro
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
Gostei + 0
07/12/2006
Andersonpgsql
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
Gostei + 0
19/01/2007
Daemon
Gostei + 0
10/12/2008
Silvio Ribeiro
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)