Exibir campo blob em Dbgrid
12/12/2005
0
eu uma tabela onde possue um campo blob... e tipow faco um query buscando estes dados junto com o blob.. e qria q fosse exibido no grid o texto q eh gravado no campo blob...
tem alguma maneira...
abracos
valmar
Valmarsantos
Posts
12/12/2005
Adriano Santos
13/12/2005
Eniorm
SELECT
CODIGO,
NOME,
[color=red:1d93bb1d32]SUBSTRING(CAMPOBLOB FROM 1 FOR TOTAL) [/color:1d93bb1d32]AS NOMECAMPO
FROM....
Note que o SUBSTRING é do banco FB então não funciona com outro. E TOTAL é a quantidade de caracteres a ser copiado a partir da posição 1, é semelhante ao COPY do Pascal.
abraço
13/12/2005
Adriano Santos
procedure TfPrincipal.dgGradePrincipalDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var R : TRect; begin {exibe campo memo} R := Rect; Dec(R.Bottom,2); if Column.Field = qrySuaQuerySEU_CAMPO then begin if not (gdSelected in State) then dgGradePrincipal.Canvas.FillRect(Rect) else dgGradePrincipal.Canvas.FillRect(Rect); {Desenha o texto do campo} DrawText(dgGradePrincipal.Canvas.Handle, pchar(qrySuaQuerySEU_CAMPO.AsString),Length(qrySuaQuerySEU_CAMPO.AsString),R,DT_WORDBREAK); end; end;
Notem que há um problema na exibição porque a altura da linha é muito pequena então mude a fonte do DBGrid para uns 24 e depois cliquem duas vezes no DBGrid, selecione todos os campos e mudem o tamanho da fonte deles para o tamanho padrão. Isso fará com que a linha do DBGrid fique mais alta.
Pronto. Essa dica foi tirada de uma revista ClubeDelphi, mas não me lembro qual...faz muito tempo que isso saiu.
13/12/2005
Mdm
uma forma mais simples setia vc usar o evento OnGetText do Field do Campo Blob, assim :
Text := qryNomeCampo.Asstring;
Espero ter lhe ajudado.
[]s
13/12/2005
Adriano Santos
Text := qryNomeCampo.Asstring;
Funciona també, só não tem o mesmo efeito. Do jeito que falei ele mostra uma boa parte do texto contido no BLOB.
13/12/2005
Eniorm
Text := qryNomeCampo.Asstring;
E outro, isso funciona caso vc tenha adicionado os TFields na query....! do contrário vc não acessa pelo evento OnGetText do TField
Clique aqui para fazer login e interagir na Comunidade :)