Fórum Gravar na tabela em modo de edição (ou algo assim)??? #387623
30/09/2010
0
No código abaixo, como faço pra que o campo que adicionei aceit eo valor?
procedure TDMForm.frxRelatorioBeforePrint(Sender: TfrxReportComponent);
var
PV : Double;
PC : Double;
Margem : Double;
begin
PC := sdsProduto.FieldByName('PRECO_CUSTO').AsFloat;
Margem := sdsProduto.FieldByName('MARGEM').AsFloat;
PV := (PC * Margem)/100 + PC;
sdsProduto.FieldByName('PV').Value := PV;
end;
No sdsProduto adicionei um novo campo (PV).
Ao abrir o relatório, gera o erro:
Erro(s) encontrado(s):
sdsProduto: Dataset not in edit or insert mode
Obrigado!
Elton Ésqui
Curtir tópico
+ 0Posts
30/09/2010
Wilson Junior
procedure TDMForm.frxRelatorioBeforePrint(Sender: TfrxReportComponent);
var
PV, PC, Margem: Double;
begin
PC := sdsProduto.FieldByName('PRECO_CUSTO').AsFloat;
Margem := sdsProduto.FieldByName('MARGEM').AsFloat;
PV := (PC * Margem)/100 + PC;
sdsProduto.Edit;
sdsProduto.FieldByName('PV').Value := PV;
sdsProduto.Post;
end;
Espero ter colaborado.
Gostei + 0
30/09/2010
Ricardo Araujo
nosso colegar já respondeu sua pergunta, esta correto o que ele fez.
Gostei + 0
30/09/2010
Eriley Barbosa
Gostei + 0
30/09/2010
Wilson Junior
Gostei + 0
30/09/2010
Elton Ésqui
Então...o q preciso é o seguinte:
O campo que mostra o resultado da soma não existe, o que fiz foi calcular e por o resultado numa variável. Agora preciso somar todos esses resultados, como o Eriley comentou. Será exibido no relatório.
Olha o cód.
procedure TDMForm.frxRelatorioBeforePrint(Sender: TfrxReportComponent);
var
PV : Double;
PC : Double;
DifP : Double;
Margem : Double;
begin
PC := sdsProduto.FieldByName('PRECO_CUSTO').AsFloat;
Margem := sdsProduto.FieldByName('MARGEM').AsFloat;
PV := (PC * Margem)/100 + PC;
DifP := PV - PC;
{sdsProduto.Edit;
sdsProduto.FieldByName('PVENDA').Value := PV;
sdsProduto.Post;}
if PV = 0 then
begin
(frxRelatorio.FindObject('PV') as TfrxMemoView).Text := '-';
end
else
(frxRelatorio.FindObject('PV') as TfrxMemoView).Text := 'R$ ' + FloatToStr(PV);
if DifP = 0 then
begin
(frxRelatorio.FindObject('DifP') as TfrxMemoView).Text := '-';
end
else
(frxRelatorio.FindObject('DifP') as TfrxMemoView).Text := 'R$ ' + FloatToStr(DifP);
if PC = 0 then
begin
(frxRelatorio.FindObject('PRECO_CUSTO') as TfrxMemoView).Text := '-';
end
else
(frxRelatorio.FindObject('PRECO_CUSTO') as TfrxMemoView).Text := 'R$ ' + FloatToStr(PC);
end;
Gostei + 0
30/09/2010
Eriley Barbosa
Gostei + 0
30/09/2010
Eriley Barbosa
Gostei + 0
30/09/2010
Elton Ésqui
Só preciso da soma...
Veja a imagem. Onde destquei de vermelho é o lugar da soma da coluna!
O valor do custo consigo somar pq existe no BD. O preço de venda obtive calculando com o percentual da mergem, que tb tem no BD. A diferença obtive subtarindo o PV - PC.
A soma desses dois não tenho no BD.
Gostei + 0
30/09/2010
Eriley Barbosa
Então...o q preciso é o seguinte:
O campo que mostra o resultado da soma não existe, o que fiz foi calcular e por o resultado numa variável. Agora preciso somar todos esses resultados, como o Eriley comentou. Será exibido no relatório.
Olha o cód.
procedure TDMForm.frxRelatorioBeforePrint(Sender: TfrxReportComponent);
var
PV, totpv : Double;
PC, totpc : Double;
DifP, totdifp : Double;
Margem : Double;
begin
PC := sdsProduto.FieldByName('PRECO_CUSTO').AsFloat;
Margem := sdsProduto.FieldByName('MARGEM').AsFloat;
PV := (PC * Margem)/100 + PC;
DifP := PV - PC;
if PV = 0 then
(frxRelatorio.FindObject('PV') as TfrxMemoView).Text := '-'
else
begin
(frxRelatorio.FindObject('PV') as TfrxMemoView).Text := 'R$ ' + FloatToStr(PV);
totpv := totpv + pv;
end;
if DifP = 0 then
(frxRelatorio.FindObject('DifP') as TfrxMemoView).Text := '-'
else
begin
(frxRelatorio.FindObject('DifP') as TfrxMemoView).Text := 'R$ ' + FloatToStr(DifP);
totdifp := totdifp + DifP;
end;
if PC = 0 then
(frxRelatorio.FindObject('PRECO_CUSTO') as TfrxMemoView).Text := '-'
else
begin
(frxRelatorio.FindObject('PRECO_CUSTO') as TfrxMemoView).Text := 'R$ ' + FloatToStr(PC);
totpc := totpc + PC;
end;
frxRelatorio.FindObject('TOT_PV') as TfrxMemoView).Text := 'R$ ' + FloatToStr(totpv);
frxRelatorio.FindObject('TOT_DIFP') as TfrxMemoView).Text := 'R$ ' + FloatToStr(totdifp);
frxRelatorio.FindObject('TOT_PC') as TfrxMemoView).Text := 'R$ ' + FloatToStr(totpc);
end;
Gostei + 0
30/09/2010
Aroldo Zanela
Gostei + 0
30/09/2010
Eriley Barbosa
Gostei + 0
30/09/2010
Aroldo Zanela
Gostei + 0
30/09/2010
Elton Ésqui
Desisti de fazer pelo cód delphi e passei pelo SQL mesmo
SELECT P.CODIGO, P.NOME, P.PRECO_CUSTO, P.MARGEM, P.PRECO_CUSTO * (1 + (P.MARGEM / 100)) AS PRECO_VENDA, P.PRECO_CUSTO * (1 + (P.MARGEM / 100)) - (P.PRECO_CUSTO) AS DIF_PRECO FROM VRPROD P WHERE P.CODIGO BETWEEN 1 AND 9999 AND P.MARGEM IS NOT NULL AND P.PRECO_CUSTO IS NOT NULL AND P.MARGEM <> '0' AND P.PRECO_CUSTO <> '0' GROUP BY P.CODIGO, P.NOME, P.PRECO_CUSTO, P.MARGEM, PRECO_VENDA
Valeu
Gostei + 0
14/10/2010
Elton Ésqui
Gostei + 0
14/10/2010
Wilson Junior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)