Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Ribamar

Soma DBGrid

Recommended Posts

você pode fazer um while na tabela somente o campo desejado...

Sou leigo em Delphi, onde posso colocar isso neste código do OnCalc do Grig?procedure TForm1.ProcessoCalcFields(DataSet: TDataSet);var vEspaco, vEletr, vInv, vGas, vAmort, vHoras, vTurno, vCustEsp, vCustEle, vUltElet, vUltGas, vJuros, vCustGas, vTxManut, vTxManutAc, vTxAc, Espaco, Depreciacao, Eletr, Inv, Gas, Manut, ManutAc, TtFixo, TfVar, Dif, CustoVar, CustoUnit, vMO, vGGF, vCustMaq, vCustTt, vCustMO, vCustGGF, vPessoas, vTempo, vCavid, vTurnos, vtempot, vMaqs, vCustoTt, vCustMOs, vCustGGFs,vPessSet, vTempSet, SetMaq, TempSet : Real; CodigPr : string;begin// if CodigPr = Processos.FieldByName('Maquina').asString then // begin // Captura Dados Maquina if Processo.FieldByName('Espaco').asstring <> '' then begin vEspaco := Processo.FieldByName('Espaco').asFloat; DBEdit1003.Text := FloatToStrF(vEspaco,ffNumber,10,3); end; if Processo.FieldByName('Eletr').asstring <> '' then begin vEletr := Processo.FieldByName('Eletr').asFloat; DBEdit1004.Text := FloatToStrF(vEletr,ffNumber,10,3); End; if Processo.FieldByName('Inv').asstring <> '' then begin vInv := Processo.FieldByName('Inv').asFloat; DBEdit1001.Text := FloatToStrF(vInv,ffNumber,10,3); end; if Processo.FieldByName('Gas').asstring <> '' then begin vGas := Processo.FieldByName('Gas').asFloat; DBEdit1005.Text := FloatToStrF(vGas,ffNumber,10,3); end; if Processo.FieldByName('Amortiz').asstring <> '' then begin vAmort := Processo.FieldByName('Amortiz').asFloat; DBEdit1002.Text := FloatToStrF(vAmort,ffNumber,10,3); end; // if Processo.FieldByName('Horas').asstring <> '' then // begin // vHoras := Processo.FieldByName('Horas').asFloat; // end; if Processo.FieldByName('Turnos').asstring <> '' then begin vTurno := Processo.FieldByName('Turnos').asFloat; end; // Captura Dados Mão de Obra if Processo.FieldByName('MO').asstring <> '' then begin vMO := Processo.FieldByName('MO').asFloat; end; if Processo.FieldByName('GGF').asstring <> '' then begin vGGF := Processo.FieldByName('GGF').asFloat; end; vPessoas := Processo.FieldByName('QMaoObra').asFloat; vMaqs := Processo.FieldByName('QMaquina').asFloat; vTempo := Processo.FieldByName('Ciclo').asFloat; vCavid := Processo.FieldByName('Cavidades').asFloat; vTurno := Processo.FieldByName('Turnos').asFloat; vPessSet := Processo.FieldByName('PSet').asFloat; vTempSet := Processo.FieldByName('TempoSet').asFloat; vCustEsp := 66.00; // Planta.FieldByName('').asFloat; vCustEle := 0.2211; // Planta.FieldByName('').asFloat; vUltElet := 0.75; // Planta.FieldByName('').asFloat; vUltGas := 1; // Planta.FieldByName('').asFloat; vHoras := 1795; // Planta.FieldByName('').asFloat; vJuros := 0; // Referencia.FieldByName('').asFloat; vCustGas := 2.33; // Planta.FieldByName('').asFloat; vTxManut := 0.037; // Planta.FieldByName('').asFloat; vTxManutAc := 1; // Referencia.FieldByName('').asFloat; vTxAc := 0.00; // Planta.FieldByName('').asFloat; // Efetua Calculos Maquinas if vCustEsp <> 0 then begin Espaco := vEspaco * vCustEsp; //DBEdit1005.Text := FloatToStrF(Espaco,ffNumber,10,3); end; if vAmort <> 0 then begin Depreciacao := vInv / vAmort; DBEdit1006.Text := FloatToStrF(Depreciacao,ffNumber,10,3); end; Eletr := vEletr * vCustEle * 0.75 * vHoras * vTurno ; DBEdit1007.Text := FloatToStrF(Eletr,ffNumber,10,3); Inv := (vInv + vInv/2) * vJuros; DBEdit1009.Text := FloatToStrF(Inv,ffNumber,10,3); Gas := vGas * vCustGas * vUltGas * vHoras * vTurno ; DBEdit1010.Text := FloatToStrF(Gas,ffNumber,10,3); Manut := vInv * vTxManut ; DBEdit1011.Text := FloatToStrF(Manut,ffNumber,10,3); ManutAc := ( vInv * vTxManut ) * ( 1 + vTxAc ); DBEdit1012.Text := FloatToStrF(ManutAc,ffNumber,10,3); // Efetua Calculos Horas if FloatToStr(vCavid) <> '' then begin vTempot := vTempo / vCavid; end else begin Messagedlg('Calculo Tempo Bad', mtinformation, [mbok], 0); end; vCustMO := vTempot * vMO * vPessoas; vCustGGF := vTempot * vGGF * vPessoas; // Totalização TtFixo := Espaco + Depreciacao + Eletr + Inv + Gas + ManutAc; DBEdit1013.Text := FloatToStrF(TtFixo,ffNumber,10,3); TfVar := Espaco + Depreciacao + Inv + (Manut * 0.20) ; DBEdit1014.Text := FloatToStrF(TfVar,ffNumber,10,3); Dif := TtFixo - TfVar ; DBEdit1015.Text := FloatToStrF(Dif,ffNumber,10,3); if vHoras <> 0 then begin CustoVar := (Dif / (vHoras * vTurno )) / 60 ; DBEdit1016.Text := FloatToStrF(CustoVar,ffNumber,10,3); CustoUnit := (( TfVar / ( vHoras * vTurno ) ) / 60) + CustoVar; DBEdit1017.Text := FloatToStrF(CustoUnit,ffNumber,10,3); end else begin messagedlg('Não Foi Efetuado o Calculo!', mtInformation, [mbok], 0); end; if TempSet <> 0 then begin SetMaq := ((TempSet / 60 ) / 1000 ) * (vCustMO + vCustGGF + CustoUnit) / vPessSet ; end; vCustMaq := vTempot * CustoUnit * vMaqs ; vCustoTt := vCustMaq + vCustMO + vCustGGF + vCustMaq ; ProcessoCustoMaq.Value := FloatToStrF(CustoUnit,ffNumber,5,3); processoCustoTot.Value := FloatToStrF(vCustoTt,ffNumber,5,3); ProcessoCustoMO.Value := FloatToStrF( (vCustMO + vCustGGF),ffNumber,5,3 );end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso se utilizar o while não poderá ficar no OnCalcField, terá de ser em um evento tipo no click de um botão ou algo do tipo, possivelmente para mostrar as informações você clica em um botão ou algo do tipo, no caso assim que abriu a qry você pode fazer o while somando o campo e apresentando no edit desejado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso se utilizar o while não poderá ficar no OnCalcField, terá de ser em um evento tipo no click de um botão ou algo do tipo, possivelmente para mostrar as informações você clica em um botão ou algo do tipo, no caso assim que abriu a qry você pode fazer o while somando o campo e apresentando no edit desejado....

Cara Como eu crio uma Query vinculada numa tabela? já tentei criar pelo Database Desktop, mas não consegui colocar no projeto, como isso funciona, tenho livros de Delphi mas não encontrei nada do tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vincular tipo usando MaterSource você naum vai conseguir, você terá de fazer usando SQL e usando o SQL filtrar conforme necessidade...

Não, conheço nada de SQL, o último curso que fiz em qq linguagem foi Clipper em 1991, tudo hoje é novidade. mesmo que pudesse fazer isso não tenho SQL na máq, existe alguma outra forma, ou terei de instalar SQL, para poder continua meu projeto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL, no caso é comandos que você executa sobre o seu BD para filtrar informações, um exemplo de SQL simplis seria:

 

select *from cliente
Onde que irá buscar todos os clientes do seu BD, com o delphi você pode usar o SQL Explorer nele você configura uma fonte de dados, e pode assim efetuar comandos SQL's, depois podendo passar os comandos para dentro do seu sistema, usando no caso a qry...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.