DBRichEdit - PostGreSQL
Saudações amigos desenvolvedores,
estou com um problema e agradeço o auxílio desde já.
Estou querendo armazenar um texto e suas marcas (sublinhado, negrito e itálico, apenas) em um BD PostGreSQL, entretanto estou com um problema. O tipo de dado ideal (BLOB) não existe no PostGreSQL, e se usar o DBRichEdit com um tipo de dado para string (text, char, varchar), a formatação é perdida.
Existe alguma solução para isso?
Eu vi o link (http://forum.clubedelphi.net/viewtopic.php?p=178951&sid=eacbfa14ebdca799034b49fed5941739), mas dá um erro quando tento fazer o mesmo (Abstract Error - Failed to save stream)...
Aguardo respostas e agradeço novamente.
estou com um problema e agradeço o auxílio desde já.
Estou querendo armazenar um texto e suas marcas (sublinhado, negrito e itálico, apenas) em um BD PostGreSQL, entretanto estou com um problema. O tipo de dado ideal (BLOB) não existe no PostGreSQL, e se usar o DBRichEdit com um tipo de dado para string (text, char, varchar), a formatação é perdida.
Existe alguma solução para isso?
Eu vi o link (http://forum.clubedelphi.net/viewtopic.php?p=178951&sid=eacbfa14ebdca799034b49fed5941739), mas dá um erro quando tento fazer o mesmo (Abstract Error - Failed to save stream)...
Aguardo respostas e agradeço novamente.
Leonardo_gina
Curtidas 0
Respostas
Ruysalles
05/10/2007
Ainda nao utilizei este tipo, mas consultando a net, verifiquei que os campos blobs podem ser substituídos pelo campo bytea.
Espero ter ajudado
Espero ter ajudado
GOSTEI 0
Leonardo_gina
05/10/2007
Bom, vou tentar novamente...
:D
Espero que dê certo... Se tiver retorno, volto a postar aqui...
Agradeço Ruy...
:D
Espero que dê certo... Se tiver retorno, volto a postar aqui...
Agradeço Ruy...
GOSTEI 0
Leonardo_gina
05/10/2007
Bom tentando conectar diretamente o DBRichEdit com o campo do tipo Bytea no PostGreSQL acusa o seguinte erro: ´ERROR: type ´lo´ does not exist; Error while executing the query´.
Entretanto, eu fiquei feliz porque pelo que entendi, o Delphi entende o meu campo como tendo tipo de dado Blob, pois quando olhei no ObjectInspector, existe uma propriedade [b:52e5cd0bce]BlobType[/b:52e5cd0bce]. Essa propriedade estava como [b:52e5cd0bce]ftBlob[/b:52e5cd0bce]. Tem que setar para algum outro valor, visto que o meu campo se destina a armazenar apenas texto?
Bom, continuo na briga aqui. Se alguém puder ajudar continuarei sendo grato. :D
Entretanto, eu fiquei feliz porque pelo que entendi, o Delphi entende o meu campo como tendo tipo de dado Blob, pois quando olhei no ObjectInspector, existe uma propriedade [b:52e5cd0bce]BlobType[/b:52e5cd0bce]. Essa propriedade estava como [b:52e5cd0bce]ftBlob[/b:52e5cd0bce]. Tem que setar para algum outro valor, visto que o meu campo se destina a armazenar apenas texto?
Bom, continuo na briga aqui. Se alguém puder ajudar continuarei sendo grato. :D
GOSTEI 0
Leonardo_gina
05/10/2007
Bom, já que a galera pede para postar se deu certo ou não, afirmo dizendo que o meu não deu certo ainda não. :D
Aconselho utilizar outro banco por enquanto (FireBird ou InterBase). :D
Aconselho utilizar outro banco por enquanto (FireBird ou InterBase). :D
GOSTEI 0
Bon Jovi
05/10/2007
O conteúdo de um RTF é texto e nao binário, pq simplesmente nao usa o tipo TEXT?
GOSTEI 0
Leonardo_gina
05/10/2007
Boa Bon Jovi... :D
Eu já estava pensando em fazer isso mesmo, mas queria de preferência utilizar um componente da palheta Data Controls, para facilitar o trabalho...
Entretanto, o importante é resolver o problema, então fiz o seguinte:
Alterei o tipo do meu campo de bytea, que era o que eu estava tentando fazer funcionar, para o campo text e receber o texto rtf. Para isto utilizei um Rich Edit para receber as informações a serem armazenadas no BD.
Entretanto, eu precisei criar uma tabela para criar um campo bytea, pois não consegui passar o que estava no Rich Edit diretamente para o campo text, então primeiro eu passe para o campo bytea e depois para o campo text.
O código ficou assim:
procedure Tfrm_Questoes.SBSalvar2Click(Sender: TObject);
var
Stream: TMemoryStream;
Begin
Stream := TMemoryStream.Create();
try
RichEdit1.Lines.SaveToStream(Stream);
Stream.Seek(0,soFromBeginning);
TBlobField(Modulo.Tabela.FieldByName(´campoblob´)).LoadFromStream(Stream);
Modulo.campotext.Value := Modulo.campoblob.AsString;
finally
Stream.Free;
end;
Tabela.Post;
End;
Agradeço a ajuda de todos...
Um abraço e qualquer coisa, é só entrar em contato por e-mail: leonardo_gina@hotmail.com
Eu já estava pensando em fazer isso mesmo, mas queria de preferência utilizar um componente da palheta Data Controls, para facilitar o trabalho...
Entretanto, o importante é resolver o problema, então fiz o seguinte:
Alterei o tipo do meu campo de bytea, que era o que eu estava tentando fazer funcionar, para o campo text e receber o texto rtf. Para isto utilizei um Rich Edit para receber as informações a serem armazenadas no BD.
Entretanto, eu precisei criar uma tabela para criar um campo bytea, pois não consegui passar o que estava no Rich Edit diretamente para o campo text, então primeiro eu passe para o campo bytea e depois para o campo text.
O código ficou assim:
procedure Tfrm_Questoes.SBSalvar2Click(Sender: TObject);
var
Stream: TMemoryStream;
Begin
Stream := TMemoryStream.Create();
try
RichEdit1.Lines.SaveToStream(Stream);
Stream.Seek(0,soFromBeginning);
TBlobField(Modulo.Tabela.FieldByName(´campoblob´)).LoadFromStream(Stream);
Modulo.campotext.Value := Modulo.campoblob.AsString;
finally
Stream.Free;
end;
Tabela.Post;
End;
Agradeço a ajuda de todos...
Um abraço e qualquer coisa, é só entrar em contato por e-mail: leonardo_gina@hotmail.com
GOSTEI 0