quot;could not convert variant of type null type (double)q

08/06/2008

1

Pessoal,
Teintei no evento onGetText do campo agregado assim

procedure TfrmEfetPagContPagar.cdsTempBancosSomaChequeGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin
  inherited;
  {:Mudar a mascara no BDText de um campo agregate}
  {if not Sender.IsNull then //quando não for nulo formatar para
     Text := FormatFloat(´#,0.00´,Sender.Value);}
end;


Aparece certo, mais se eu ir para outro dado no dbgrid ele some, e se eu não colocar if not sender.isnull ele gera um erro assim
[color=red:4731a45cfd]´could not convert variant of type null type (double)´[/color:4731a45cfd]

No caso até agora só consegui assim

procedure TfrmEfetPagContPagar.DBGrid1ColEnter(Sender: TObject);
begin
  inherited;
  {:Para formatar um cds estou usando no evento afteropen do cds, pois não está
   funcionando as as propriedades currency = true nem displayformat do field no cds}
  Curr_Tot := dpsBaixaContPagar[´Soma_Total´];
  DBText12.Caption := FormatFloat(´,0.00´,(Curr_Tot));
end;


procedure TfrmEfetPagContPagar.DBGrid1ColumnMoved(Sender: TObject;
  FromIndex, ToIndex: Integer);
begin
  inherited;
  {:Para formatar um cds estou usando no evento afteropen do cds, pois não está
   funcionando as as propriedades currency = true nem displayformat do field no cds}
  Curr_Tot := dpsBaixaContPagar[´Soma_Total´];
  DBText12.Caption := FormatFloat(´,0.00´,(Curr_Tot));
end;

procedure TfrmEfetPagContPagar.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  inherited;
  {:Para formatar um cds estou usando no evento afteropen do cds, pois não está
   funcionando as as propriedades currency = true nem displayformat do field no cds}
  Curr_Tot := dpsBaixaContPagar[´Soma_Total´];
  DBText12.Caption := FormatFloat(´,0.00´,(Curr_Tot));
end;


procedure TfrmEfetPagContPagar.dpsBaixaContPagarAfterOpen(
  DataSet: TDataSet);
begin
  inherited;
  {:Para formatar um cds estou usando no evento afteropen do cds, pois não está
   funcionando as as propriedades currency = true nem displayformat do field no cds}
  Curr_Tot := dpsBaixaContPagar[´Soma_Total´];
  DBText12.Caption := FormatFloat(´,0.00´,(Curr_Tot));
end;


procedure TfrmEfetPagContPagar.dpsBaixaContPagarAfterPost(
  DataSet: TDataSet);
begin
  inherited;
  {:Para formatar um cds estou usando no evento afterpost do cds, pois não está
   funcionando as as propriedades currency = true nem displayformat do field no cds
   neste caso aqui apenas se for feito alguma alteração na tabela}
  Curr_Tot := dpsBaixaContPagar[´Soma_Total´];
  DBText12.Caption := FormatFloat(´,0.00´,(Curr_Tot));
end;


Mais to achando que é muito código repetido para fazer apenas uma coisa, que no caso é apenas para formatar o texto no formato 0,00

Este campo agregado no clientdataset soma o total de uma coluna de um dbgrid.

Estou usando DBExpress + Delphi 7

Ja tive o mesmo problemas com o BDS2006 e tive que formatar assim no evento onGetText
Text := FormatFloat( TFMTBCDField(Sender).DisplayFormat, Sender.AsFloat );
Mais não era campos agregados e sim não formatava o clientdataset no dbgrid, agora no delphi 7 formata no dbgrid, mais os campos agregados não msotra formatado, nem adiante eu usar o dispalyformat do field e nem a propriedade currency = true que ele nem reconhece o formato em moeda.


Responder

Posts

Outro problema com este erro

Pessoal, como faço para que não seja movido com o mouse sobre as colunas no dbgrid para que não fique aumentando nem diminuindo o tamanho definido.

Tipo travar para que ninguem possa alterar o tamanho da coluna no dbgrid?

É que eu uso este código aqui para mostrar um campo memo no dbgrid
procedure TfrmEfetPagContPagar.dpsBaixaContPagarHISTORICOGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin
  inherited;
  if not Sender.IsNull then Text := Sender.AsString; 
end;


E se modificar o tamanho na grade ele mostra um erro [color=red:1258259d14]´could not convert variant of type null into type (double)´[/color:1258259d14]


Responder
Outro problema com este erro Pessoal, como faço para que não seja movido com o mouse sobre as colunas no dbgrid para que não fique aumentando nem diminuindo o tamanho definido. Tipo travar para que ninguem possa alterar o tamanho da coluna no dbgrid? É que eu uso este código aqui para mostrar um campo memo no dbgrid
procedure TfrmEfetPagContPagar.dpsBaixaContPagarHISTORICOGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin
  inherited;
  if not Sender.IsNull then Text := Sender.AsString; 
end;
E se modificar o tamanho na grade ele mostra um erro [color=red:a965e7f54d]´could not convert variant of type null into type (double)´[/color:a965e7f54d]


Sobre a coluna do DBGrid ja resolvi
DbGrid -> Object Inspector -> Properties-> Options-> dgColumnResize = false;

Só falta aoutra duvida. :D


Responder