Fórum invalid class typecast delphi #580212
17/04/2017
0
estou com o seguinte erro invalid class typecast delphi, deu este erro pq preciso usar o (DataSet: TDataSet) dentro do (Sender: TObject) com a seguinte linha de codigo
qryVendasOnlineCalcFields(Sender as TDataSet);
este e o codigo :
procedure TfrmVendasOnlinePDV.btnPesquisarClick(Sender: TObject);
var
SOMA, I, TOTAL: Double;
DataIni,DataFim: TDateTime;
begin
fgActivityDialog1.Message := 'Pesquisando ...';
fgActivityDialog1.Show;
with qryVendasOnline do
begin
Close();
Params.ParamByName('pNumEmpresa').Value := ComboBox1.ItemIndex + 1;
Params.ParamByName('dtInicial').AsDateTime := StrToDate(edtDataInicio.Text);
Params.ParamByName('dtFinal').AsDateTime := StrToDate(edtDataFinal.Text);
Open();
end;
with qryVendasOnline do
begin
Close();
Params.ParamByName('pNumEmpresa').Value := ComboBox1.ItemIndex + 1;
Params.ParamByName('dtInicial').AsDateTime := StrToDate(edtDataInicio.Text);
Params.ParamByName('dtFinal').AsDateTime := StrToDate(edtDataFinal.Text);
Open();
end;
begin
SOMA := 0;
with qryVendasOnline do
begin
qryVendasOnline.DisableControls;
qryVendasOnline.First;
while not qryVendasOnline.Eof do
begin
SOMA := (SOMA + qryVendasOnline.FieldByName('sum').AsFloat);
qryVendasOnline.Next;
end;
qryVendasOnline.EnableControls;
lbCalc.Text := FloatToStr(SOMA);// Format('%00.0n',);
lbCalc.Text := FormatFloat('#####0.00,',StrToFloat(lbCalc.Text));
end;
end;
with qryVendasOnline do
begin
DataIni := Params.ParamByName('dtInicial').AsDateTime;
DataFim := Params.ParamByName('dtFinal').AsDateTime;
I := Trunc(DataFim - DataIni);
LBDIAS.Text := (FloatToStr(I));
end;
begin
TOTAL := SOMA / I;
lbTotal.Text := FloatToStr(TOTAL);
lbTotal.Text := FormatFloat('#####0.00,',StrToFloat(lbTotal.Text));
qryVendasOnlineCalcFields(Sender as TDataSet);
qryVendasOnlineMediaDia.DataSet.FieldByName('MediaDia').AsFloat :=
qryVendasOnlinesum.DataSet.FieldByName('sum').AsFloat / StrToFloat(LBDIAS.Text);
end;
fgActivityDialog1.Hide;
end;
qryVendasOnlineCalcFields(Sender as TDataSet);
este e o codigo :
procedure TfrmVendasOnlinePDV.btnPesquisarClick(Sender: TObject);
var
SOMA, I, TOTAL: Double;
DataIni,DataFim: TDateTime;
begin
fgActivityDialog1.Message := 'Pesquisando ...';
fgActivityDialog1.Show;
with qryVendasOnline do
begin
Close();
Params.ParamByName('pNumEmpresa').Value := ComboBox1.ItemIndex + 1;
Params.ParamByName('dtInicial').AsDateTime := StrToDate(edtDataInicio.Text);
Params.ParamByName('dtFinal').AsDateTime := StrToDate(edtDataFinal.Text);
Open();
end;
with qryVendasOnline do
begin
Close();
Params.ParamByName('pNumEmpresa').Value := ComboBox1.ItemIndex + 1;
Params.ParamByName('dtInicial').AsDateTime := StrToDate(edtDataInicio.Text);
Params.ParamByName('dtFinal').AsDateTime := StrToDate(edtDataFinal.Text);
Open();
end;
begin
SOMA := 0;
with qryVendasOnline do
begin
qryVendasOnline.DisableControls;
qryVendasOnline.First;
while not qryVendasOnline.Eof do
begin
SOMA := (SOMA + qryVendasOnline.FieldByName('sum').AsFloat);
qryVendasOnline.Next;
end;
qryVendasOnline.EnableControls;
lbCalc.Text := FloatToStr(SOMA);// Format('%00.0n',);
lbCalc.Text := FormatFloat('#####0.00,',StrToFloat(lbCalc.Text));
end;
end;
with qryVendasOnline do
begin
DataIni := Params.ParamByName('dtInicial').AsDateTime;
DataFim := Params.ParamByName('dtFinal').AsDateTime;
I := Trunc(DataFim - DataIni);
LBDIAS.Text := (FloatToStr(I));
end;
begin
TOTAL := SOMA / I;
lbTotal.Text := FloatToStr(TOTAL);
lbTotal.Text := FormatFloat('#####0.00,',StrToFloat(lbTotal.Text));
qryVendasOnlineCalcFields(Sender as TDataSet);
qryVendasOnlineMediaDia.DataSet.FieldByName('MediaDia').AsFloat :=
qryVendasOnlinesum.DataSet.FieldByName('sum').AsFloat / StrToFloat(LBDIAS.Text);
end;
fgActivityDialog1.Hide;
end;
Tulio Santana
Curtir tópico
+ 0
Responder
Posts
17/04/2017
Jones Granatyr
Opa! Seria interessante apontar em qual linha está o problema. Pelo que percebi é essa
Você não conseguirá fazer essa conversão porque o Sender é um TObject (classe base do Delphi) e você está tentando transformar ela em um TDataSet. Terá que usar outra maneira para fazer esse código (se puder explicar melhor seu objetivo fica mais fácil para ajudar a como resolver)
qryVendasOnlineCalcFields(Sender as TDataSet);
Você não conseguirá fazer essa conversão porque o Sender é um TObject (classe base do Delphi) e você está tentando transformar ela em um TDataSet. Terá que usar outra maneira para fazer esse código (se puder explicar melhor seu objetivo fica mais fácil para ajudar a como resolver)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)