Fórum Passando valor de uma fields pra uma tabela???? #330815
06/10/2006
0
tipo esse e o codigo que eu to usando no Oncalcfields:
[color=red:2aa5c314ab]procedure TDM.TB_CadastroCalcFields(DataSet: TDataSet);
begin
//--------FRETE-------
DM.TB_CadastroAuxSubTotal1.AsFloat:=DM.TB_CadastroV_UNIT.AsFloat*DM.TB_CadastroFRETE.AsFloat/100;
DM.TB_CadastroAuxFrete.AsFloat:=DM.TB_CadastroAuxSubTotal1.AsFloat*DM.TB_CadastroQUANT.AsInteger;
//-----------ICMS----------------------------
DM.TB_CadastroAuxSubTotal2.AsFloat:=DM.TB_CadastroV_UNIT.AsFloat*DM.TB_CadastroICMS.AsFloat/100;
DM.TB_CadastroAuxICMS.AsFloat:=DM.TB_CadastroAuxSubTotal2.AsFloat*DM.TB_CadastroQUANT.AsInteger;
//---------------OUTROSGASTOS-------------------------
DM.TB_CadastroAuxSubTotal3.AsFloat:=DM.TB_CadastroV_UNIT.AsFloat*DM.TB_CadastroOUTROSDESP.AsFloat/100;
DM.TB_CadastroAuxOutosDesp.AsFloat:=DM.TB_CadastroAuxSubTotal3.AsFloat*DM.TB_CadastroQUANT.AsInteger;
//-----------------DESCONTOS------------------------
DM.TB_CadastroAuxSubTotal4.AsFloat:=DM.TB_CadastroV_UNIT.AsFloat*DM.TB_CadastroDESCONTO.AsFloat/100;
DM.TB_CadastroAuxDesconto.AsFloat:=DM.TB_CadastroAuxSubTotal4.AsFloat*DM.TB_CadastroQUANT.AsInteger;
//-----------------------SOMA TOTAL------------
DM.TB_CadastroV_TOTAL.AsFloat:=(DM.TB_CadastroAuxFrete.AsFloat+DM.TB_CadastroAuxICMS.AsFloat+DM.TB_CadastroAuxOutosDesp.AsFloat-DM.TB_CadastroAuxDesconto.AsFloat+DM.TB_CadastroV_UNIT.AsFloat)*DM.TB_CadastroQUANT.AsInteger;
end;[/color:2aa5c314ab]
Ele roda blz mais quando eu vou abaster os campo num dbgrid ele da ERRO,
+ se eu mudar a ultima linha pra :
[color=red:2aa5c314ab]
DM.TB_CadastroAuxValorTotal.AsFloat:=(DM.TB_CadastroAuxFrete.AsFloat+DM.TB_CadastroAuxICMS.AsFloat+DM.TB_CadastroAuxOutosDesp.AsFloat-DM.TB_CadastroAuxDesconto.AsFloat+DM.TB_CadastroV_UNIT.AsFloat)*DM.TB_CadastroQUANT.AsInteger;[/color:2aa5c314ab]
ele roda blz....
Por issu to precisando de ajuda pra pode fazer esse valor do fields, passar para a tabela DM.TB_CadastroV_TOTAL.AsFloat o resultado dos calculos acima .. um grande abraco a todos...
uma abraco a todos!!!!
Mulambo
Curtir tópico
+ 0Posts
06/10/2006
Micheus
Se não for, vc não pode atruibuir um valor a ele neste evento - a tabela estará com State = dsCalcFields.
Ele deverá estar em modo edição (dsEdit ou dsInsert) para que vc possa atribuir um valor a ele. Talvez dê para usar o evento OnChange dos campos (fields) da tabela envolvidos no cálculo para atualizar V_TOTAL, já que neste momento a tabela estará em edição ou inserção.
Gostei + 0
06/10/2006
Mulambo
Tem alguma ideia como posso resolver esse problema...
Gostei + 0
07/10/2006
Micheus
Gostei + 0
07/10/2006
Mulambo
Estou desenvolvendo um Sistema pra cotação de preço, e esse sistema vai me fornecer qual empresa eu devo comprar o produto que tiver o menor preço... so que eu naum tenho um numero exato de empresas que participaram dessa cotação, posso ter tanto 2 quanto 10 empresas.
porem nessa cotação vou ter de levar em consideração os dados de FRETE,ICMS,VALOR UNITARIO,DESCONTO,QUANTIDADE.
Para desenvolver esse sistema eu to usando o delphi7 e o DB Interbase.
criei uma tabela com o nome de CADASTRO_EMPRESA, que contem os dados que eu vou receber de cada empresa, como o valor do ICMS,VALOR UNITARIO,ETC. e criei uma outra tabela para receber os dados do produto, CODIGO E NOME, e uma outra tabela pra receber os dados das empresas que ganharam a cotação dos produtos, com o CODIGO DO PRODUTO, NOME DO PRODUTO,NOME DA EMPRESA, QUANT,V_UNIT,ICMS,FRETE,DESCONTO,VALOR TOTAL.
Criei um form principal que contem um DBGRID no qual o usuario vai cadastrar os nomes das empresas que irão participar da cotação, o ICMS cobrado por elas sobre o produto e o valor do frete.
ja em um outro form, vou ter um DBEdit com o codproduto e outro DBEdit com o nome do produto e coloquei um dbgrid que vai conter os dados que o usuario cadastrou no form principal(NOME DA EMPRESAS, ICMS,FRETE) e agora ira conter novos campos no qual o usuario ira preencher como: QUANT,V_UNITARIO,DESCONTO. e tambem ira conter o campo VALORTOTAL que ira conter o calculo de cada empresa como por exemplo:
ValorTotal=Quant*ValorUnitario;
eu to usando tbem um DataModule, que contem:IBTransaction,IBDatabase,TITable(CadastroEmpresa),DataSource(DS_CadEmpresa),TITable(CadProduto),DataSource(DS_CadProduto),TITable(ResulCotacao),DataSource(DS_ResulCotacao) e uma TIBQuery(Q_MIN),DataSource(DS_QMIN);
Na tabela CadProduto, eu criei umas (fields) para auxiliar a operações de calculo sao elas : AuxFrete,AuxICMS,AuxDESC, setei elas como float e no Object Insperctor mudei a propriedade FieldKind pra fkCalculated, issu em todas as fields e tabem no campo V_Total pra fkCalculated senaum da erro experiencia propria....hehehe.
baum eu to efetuando as operações de calculos no EVENTO ONCALCFIELDS, e atribuo os resultado dessa operação para o campo ValorTotal. aqueles calculos maluco que eu postei ai...
e to usando a TIquery pra achar o minimo no campo ValorTotal.
ai que começa os meus problemas...
Quando eu mando ele achar o minimo ele naum acha, porq o campo VALORTOTAL naum contem dados nenhum.. ta vazio... tipo ele mostra no dbgrid.
FORM
__________________________________________________________
COD[ 000000001] nome [Torneira]
DBGRID
NOMEDAEMPRESA.....QUANT...VUNITARIO...FRETE...VALORTOTAL
x1 ...........................5..........R$2,00..........0¬.........R$ 10,00
x1 ...........................5..........R$3,00..........0¬.........R$ 15,00
x1 ...........................5..........R$1,00..........0¬.........R$ 5,00
DBgrid que mostra o menor valor do valor total
NOMEDAEMPRESA.....QUANT...VUNITARIO...FRETE...VALORTOTAL
......................................VAZIO.............................................
_______________________FIM FORM________________________
O comando msql que eu to usando é
SELECT MIN(Valortotal) From CADEmpresa;
e ainda tenho que manda esse menor valor que esta no dbgrid do min pra tabela de resultados.... pra ai poder gerar um relatorio...
acho que agora vai ficar mais facil pra vc entender o que eu to falando...
e se ainda puder me ajudar agradeço....
um abraço...
Gostei + 0
08/10/2006
Micheus
Ou, na query, ao invés de obter o MIN(VALORTOTAL) utilizar (QUANT*V_UNITARIO), o que deve resultar ´na mesma coisa´.
[]s
Gostei + 0
09/10/2006
Mulambo
Um grande abraço.... :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)