GARANTIR DESCONTO

Fórum ler campo BLOB #398442

30/03/2011

0

Pessoal, temos aqui um sistema de outra empresa, em uma das tabelas tem um campo tipo BLOB que está assim:
Campo tipo size subtype
texto BLOB 80 Binary

Os dados aramazenados nele contém informações da formatação do texto, assim:

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\qc\cf1\lang1046\b\f0\fs32
\par Conclus\'e3o
\par \b0\fs28
\par
\par Repetir por falta de maiores informações.

Minhas dúvidas são:
1 - Como faço para colocar esse conteúdo num TMemo sem essas formatações ?
2 - Na consulta q estou fazendo, faço um SELECT assim:
Código:


   SELECT m.idcliente, m.data, m.hora, m.texto, c.id, c.nome


 FROM MOVIMENTO m, CLIENTES c


WHERE 


   m.idcliente = c.id


     AND UPPER(m.texto) LIKE '%repetir%'



Eu preciso pegar todos as informações que no campo texto tenha a palavra repetir e ela pode estar escrita tando em maiúscula como minúscula ou com a primeira letra em maiúsculo, ou seja de várias formas, então eu tentei colocar o UPPER, mas dá erro. Como posso pegar essa palavra levando em consideração as diversas formas de escrita ?

Vlw.
Marcos Barbosa

Marcos Barbosa

Responder

Posts

30/03/2011

Wilson Junior

Ao invés de usar um TMemo utilize um TRichiEdit para ver o conteúdo do campo.
E qual o erro que ocorre ao executar o SQL?

Espero ter colaborado.
Responder

Gostei + 0

30/03/2011

Marcos Barbosa

O RichEdit funcionou legal....
O erro q tava dando deve ter sido alguma coisa errada que eu fiz, agora ñ está acontecendo mais.

Mas mesmo assim, mesmo eu colocando o UPPER, ele ñ está pegando todas as informações, tipo assim, no texto pode conter a palavra repetir de várias formas: REPETIR, repetir, Repetir... então eu gostaria de lista todas eles, contendo no texto essa palavra ele mostra. A rotina está assim:
var
 repetir :String;
begin
   repetir := 'repetir';
   CDS_Consulta.Active:=False;
   QR_Consulta.Close;
   QR_Consulta.SQL.Clear;
   QR_Consulta.SQL.Add('SELECT e.ID, e.IDPACIENTE, e.DATA, e.HORA, e.NUMEROEXAME, e.ID_INTERNO, e.ORIGEMEXP, e.LAUDO, p.ID,  p.NOME');
   QR_Consulta.SQL.Add('FROM EXAMES e, PACIENTES p');
   QR_Consulta.SQL.Add('WHERE e.IDPACIENTE = p.ID');
   QR_Consulta.SQL.Add('AND UPPER(e.laudo) LIKE '''+'%' + repetir +'%''');

   QR_Consulta.SQL.Add('ORDER BY e.DATA, e.HORA, p.nome');

   QR_Consulta.Open;
   CDS_Consulta.Active:=True;
end;



Vlw.
Responder

Gostei + 0

30/03/2011

Wilson Junior

Teste isto
   QR_Consulta.SQL.Add('SELECT e.ID, e.IDPACIENTE, e.DATA, e.HORA, e.NUMEROEXAME, e.ID_INTERNO, e.ORIGEMEXP, e.LAUDO, p.ID,  p.NOME');
   QR_Consulta.SQL.Add('FROM EXAMES e, PACIENTES p');
   QR_Consulta.SQL.Add('WHERE e.IDPACIENTE = p.ID');
   QR_Consulta.SQL.Add('AND UPPER(e.laudo) LIKE UPPER(' + QuotedStr('%' + repetir + '%') + ')' );

   QR_Consulta.SQL.Add('ORDER BY e.DATA, e.HORA, p.nome');


Espero ter colaborado.
Responder

Gostei + 0

30/03/2011

Marcos Barbosa

Eu já tinha tentado assim, mas ele só pega o q está em maiúsculo.
Responder

Gostei + 0

30/03/2011

Wilson Junior

Mas se vc está transformando o e.Laudo em maíusculo, é claro que terá que procurar o "Repetir" em maíuscuo tb.

Espero ter colaborado.
Responder

Gostei + 0

30/03/2011

Marcos Barbosa

Wilson, achei o comando CONTAINING e pelo menos no teste que fiz ele funcionou legal, agora vou popular mais a base de dados e fazer um teste final.
Então ficou assim:
  QR_Consulta.SQL.Add('AND e.laudo CONTAINING '+ QuotedStr('repetir'));


Pelo que vi ele até substitui o LIKE, mas é ideal para usar com só com esse tipo de campo.

Velho muito obrigado, vc sempre tem me dado a maior força aki no forum...
Vlw...

Responder

Gostei + 0

30/03/2011

Marcos Barbosa

AHHH, tópico concluído...
Responder

Gostei + 0

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

Aceitar