[delphi-br] Re: Desafio em cálculo novamente
Rafael, Como funciona essa ordem de execução ? se o usuário inserir um novo registro que compõe um determinado calculo ele vai ter que alterar essa ordem de execução manualmente? --- Em delphi-br@yahoogrupos.com.br, Allan GabrielAM alla...@... escreveu Olá, olha, desenvolvi um sistema para folha de pagamento onde o empresário paga seus funcionários por comissão, bonificação etc..., então tive que fazer com que ele pudesse criar várias fórmulas para um único funcionário, então criei uma tabela específica para elas,onde o usuário simplesmene brinca com campos de qualquer tabela, também passei pela mesma situação que vc, tem campos que precisam ser calculados antes para servirem de base para outros cálculos, então criei uma ordem de execução, é aí que está sua solução, pois o sistema vai executar exatamente na ordem específicada, então vc cria regras para essas execuções e pronto, não sei se é o seu caso, mas uso D7 com FB. Acredito que desenvolvendo nesse sentido é mais fácil. Espero que eu tenha te ajudado. Att. Rafael - Original Message - From: harleydiaskoehler To: delphi-br@yahoogrupos.com.br Sent: Friday, February 26, 2010 9:51 AM Subject: [delphi-br] Desafio em cálculo novamente Caros Colegas, Estou postando essa mensagem novamente pporque até aqui ainda não consegui resolver o problema. Seguinte: Tenho uma tabela com aproximadamente 200 registros dispostos da seguinte forma: ID, Descrição, valor e formula. A coluna valor em algumas situações é informada pelo usuário, mas em outras deve ser calculada de acordo com a formula estipulada na coluna formula, ou seja, sempre que a coluna formula estiver preenchida, esse valor não será digitado. Preciso de uma rotina que faça exatamente esses cálculos, pois as formulas podem ser dependentes, por exemplo, para calcular a primeira é necessário calcular a seguinte e depois retornar e efetuar o calculo da primeira e assim sucessivamente. Preciso que a função avalie a formula e identifique se o existe item dependente que seja necessário calcular antes, execute esse cálculo para depois fazer o atual. Algo tipo é feito no Excel ou Calc. Será alguem pode me ajudar nessa lógica ? Detalhe, para criação das formulas, utilizo a coluna ID que é string e faço o cálculo com a classe Tevaluator da Jedi. São cálculos simples de adição, subtração, multiplicação e divisão. O problema em si não são os cálculos mas sim como fazer as dependências. Agradeço a ajuda [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Desafio em cálculo novamente
Caros Colegas, Estou postando essa mensagem novamente pporque até aqui ainda não consegui resolver o problema. Seguinte: Tenho uma tabela com aproximadamente 200 registros dispostos da seguinte forma: ID, Descrição, valor e formula. A coluna valor em algumas situações é informada pelo usuário, mas em outras deve ser calculada de acordo com a formula estipulada na coluna formula, ou seja, sempre que a coluna formula estiver preenchida, esse valor não será digitado. Preciso de uma rotina que faça exatamente esses cálculos, pois as formulas podem ser dependentes, por exemplo, para calcular a primeira é necessário calcular a seguinte e depois retornar e efetuar o calculo da primeira e assim sucessivamente. Preciso que a função avalie a formula e identifique se o existe item dependente que seja necessário calcular antes, execute esse cálculo para depois fazer o atual. Algo tipo é feito no Excel ou Calc. Será alguem pode me ajudar nessa lógica ? Detalhe, para criação das formulas, utilizo a coluna ID que é string e faço o cálculo com a classe Tevaluator da Jedi. São cálculos simples de adição, subtração, multiplicação e divisão. O problema em si não são os cálculos mas sim como fazer as dependências. Agradeço a ajuda
[delphi-br] Desafio com cálculo
Caros Colegas, Tenho uma tabela com aproximadamente 200 registros dispostos da seguinte forma: ID, Descrição, valor e formula. A coluna valor em algumas situações é informada pelo usuário, mas em outras deve ser calculada de acordo com a formula estipulada na coluna formula, ou seja, sempre que a coluna formula estiver preenchida, esse valor não será digitado e sim calculado. Preciso de uma rotina que faça exatamente esses cálculos, pois as formulas podem ser dependentes, por exemplo, para calcular a primeira é necessário calcular a seguinte e depois retornar e efetuar o calculo da primeira e assim sucessivamente. Preciso que a função avalie a formula e identifique se o existe item dependente que seja necessário calcular antes, execute esse cálculo para depois fazer o atual. Algo tipo é feito no Excel ou Calc. Será alguem pode me ajudar nessa lógica ? Detalhe, para criação das formulas, utilizo a coluna ID que é string e faço o cálculo com a classe Tevaluator da Jedi. São cálculos simples de adição, subtração, multiplicação e divisão. Quaisquer duvidas só falar.
[delphi-br] Valor da variavel não aparece durante o debug
Galera, Instalei o Delphi 2009 no notebook e funciona perfeitamente a programação, mas quando vou debugar o sistema e posiciono o ponteiro do mouse sobre uma variavel por exemplo, não aparece o hint, tenho que usar o ctrl + F7, outra coisa que observei tb é que os hint's dos botões da barra de ferramentas do delphi tambem não aparecem. Alguem se existe alguma configuração pra resolver isso? grato
Re: RES: [delphi-br] Calculo em DBGrid
: TIntegerField; cdsCalculoValor: TFloatField; cdsCalculoTotaliza: TBooleanField; cdsCalculoValorTotaliza: TFloatField; cdsCalculoTotalValorTotaliza: TAggregateField; procedure cdsCalculoNewRecord(DataSet: TDataSet); procedure cdsCalculoTotalizaGetText(Sender: TField; var Text: String; DisplayText: Boolean); procedure cdsCalculoTotalizaChange(Sender: TField); procedure cdsCalculoBeforePost(DataSet: TDataSet); procedure cdsCalculoTotalizaSetText(Sender: TField; const Text: String); public constructor Create(AOwner: TComponent); override; end; var dbgCalculo: TdbgCalculo; implementation uses SysUtils; {$R *.dfm} procedure TdbgCalculo.cdsCalculoNewRecord(DataSet: TDataSet); begin cdsCalculoTotaliza.AsBoolean := true; cdsCalculoTotalizaChange(cdsCalculoTotaliza); end; constructor TdbgCalculo.Create(AOwner: TComponent); begin inherited Create(AOwner); // Configura uma lista de campos para uma combo que o DBGrid // automaticamente mostrará quando o usuário for informar // se o valor será totalizado ou não dbgCalculo.Columns[3].PickList.Text := 'NÃO' + sLineBreak + 'SIM'; end; procedure TdbgCalculo.cdsCalculoTotalizaGetText(Sender: TField; var Text: String; DisplayText: Boolean); const lNomes: array[Boolean] of string = ('NÃO', 'SIM'); begin if Sender.IsNull or (Sender.DataSet.RecordCount = 0) then Text := EmptyStr else {if DisplayText then} Text := lNomes[Sender.AsBoolean] {else Text := Sender.AsString} end; procedure TdbgCalculo.cdsCalculoTotalizaChange(Sender: TField); begin // Copia ou não o valor informado para o campo que será totalizado case Sender.AsBoolean of false: cdsCalculoValorTotaliza.AsFloat := 0.00; true: cdsCalculoValorTotaliza.AsFloat := cdsCalculoValor.AsFloat; end; end; procedure TdbgCalculo.cdsCalculoBeforePost(DataSet: TDataSet); begin // Antes de salvar, força recálculo da expressão totalizadora cdsCalculoTotalizaChange(cdsCalculoTotaliza) end; procedure TdbgCalculo.cdsCalculoTotalizaSetText(Sender: TField; const Text: String); begin // Traduz a entrada de strings via DBGrid em valores booleanos if Text = 'NÃO' then Sender.AsBoolean := false; if Text = 'SIM' then Sender.AsBoolean := true; // Posta a alteração para forçar recálculo cdsCalculo.Post; end; end. { Unit1.pas final } De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de harleydiaskoehler Enviada em: quinta-feira, 7 de janeiro de 2010 09:35 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Calculo em DBGrid Prezados Colegas Preciso realizar calculos dentro de um dbrig. Utilizo um clientdataset em memoria e tenho diversos registros. São quatro campos: id : integer, ds : string, totaliza : string(S/N) e vl : valor. Atraves de um stringList faço uma carga inicial dos dados que estão em um arquivo texto. O usario valida o campo valor e os altera caso necessário em seguida clica em um botão que faz os calculos dos campos valor onde (totaliza) com a flag = 'S' Gostaria de eliminar esse botão e a medida que o usuario fosse alterando o campo valor, o calculo fosse feito automaticamente, como uma planilha excel. tentei colocar o codigo do botão em diversos eventos do grid ou do proprio clientdataset, mas não consegui fazer funcionar. Alguem ja fez algo parecido ? saudações [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Calculo em DBGrid
Prezados Colegas Preciso realizar calculos dentro de um dbrig. Utilizo um clientdataset em memoria e tenho diversos registros. São quatro campos: id : integer, ds : string, totaliza : string(S/N) e vl : valor. Atraves de um stringList faço uma carga inicial dos dados que estão em um arquivo texto. O usario valida o campo valor e os altera caso necessário em seguida clica em um botão que faz os calculos dos campos valor onde (totaliza) com a flag = 'S' Gostaria de eliminar esse botão e a medida que o usuario fosse alterando o campo valor, o calculo fosse feito automaticamente, como uma planilha excel. tentei colocar o codigo do botão em diversos eventos do grid ou do proprio clientdataset, mas não consegui fazer funcionar. Alguem ja fez algo parecido ? saudações
[delphi-br] Re: Conversão de expressão
Humberto, O código a principio funciona, mas não obedece as regras matemáticas numa equação. por exemplo: 20 + (30 * 2) o resultado deveria ser 80, no seu código ele me traz o valor de 100, ou seja soma para depois multiplicar. Consegue me ajudar nisso ? grato --- Em delphi-br@yahoogrupos.com.br, humberto sales de oliveira humberto_...@... escreveu coloque um edite com sua operacao, em um button insira o seguinte codigo: var operacao : array[0..10] of double; operador : array[0..10] of char; x,z,z1 : integer; vr,s : string; begin for x := 0 to 10 do begin operacao[x] := 0; operador[x] := #0; end; vr := ''; s := edit1.text; if copy(s,length(s),1) ' ' then s := s + ' '; z := 0; z1 := 0; for x := 1 to length(s) do begin case s[x] of '(' : continue; ')',' ' : begin if (vr '') then begin operacao[z] := strtofloat(vr); inc(z,1); end; vr := ''; end; '0'..'9' : vr := vr + s[x]; '+','-','*','/' : begin operador[z1] := s[x]; inc(z1); end; end; end; for x := 0 to 10 do begin case operador[x] of '+' : operacao[0] := operacao[0] + operacao[x+1]; '-' : operacao[0] := operacao[0] - operacao[x+1]; '/' : operacao[0] := operacao[0] / operacao[x+1]; '*' : operacao[0] := operacao[0] * operacao[x+1]; end; end; showmessage(floattostr(operacao[0])); end; Pessoal, tenho uma string montada e preciso converte-la para um valor numerico de forma que o cálculo seja realizado. Ex: (100 + 20) / 4 Na verdade preciso que isso me retorne uma variavel com o valor= 30. Alguem ja fez algo parecido ?
[delphi-br] Topicos demoram a aparecer
Gostaria de saber porque os topicos inseridos demoram tanto a aparecer, postei um hoje as 8:30 e ja são 10:30 e ainda nada.
[delphi-br] Partes de uma string
Pessoal, Tenho uma string ex: ((campo1 + campo2) / 2) + campo3 preciso fazer uma consulta usando as palavras (campo1,campo2,campo3) que estam entre aspas ou um outro delimitador. O detalhe é que pode variar a quantidade de campos e tamanhos das palavras a serem pesquisadas por expressão. Como faço para extrair essas partes delimitadas da minha string para poder colocar numa query desprezando os outros caracteres (aspas, parenteses, operadores? grato
[delphi-br] Conversão de expressão
Pessoal, tenho uma string montada e preciso converte-la para um valor numerico de forma que o cálculo seja realizado. Ex: (100 + 20) / 4 Na verdade preciso que isso me retorne uma variavel com o valor= 30. Alguem ja fez algo parecido ?
[delphi-br] Criar CORINGA em registro
Prezados, Tenho uma tabela de historicos e outra de lançamentos. Gostaria que ao cadastrar determinados registros na tabela de histórico, poder incluir dentro da descrição algum tipo de coringa. Por exemplo: Vr. ref. a duplicata nº $$Numero da NF $$Nf. Até ai é tranquilo. O que preciso é que quando eu for fazer um lançamento utilizando esse histórico que tenha um ou mais coringas, o cursor seja posicionado diretamente sobre esse coringa para digitação das informações e inibindo a alteração do restante do histórico. Se o histórico tiver mais de um corringa, ao pressionar enter ele vai para o seguinte e assim sucessivamente. Alguem ja fez algo parecido que possa me ajudar ?
[delphi-br] Startar Servidor datasnap como serviço do windows na inicialização
Prezados colegas, Crei um servidor datasnap utilizando no projeto a classe TService. Consigo criar o serviço normalmente e startar manualmente no painel de controle do windows, uma vez ativo o serviço, tenho conseguido fazer a conecção do client. O problema esta quando inicializo o windows. Mesmo estando o serviço em automático, ele não inicia, e quando efetuo o login a seguinte mensagem do windows aparece. szAppName : MeuServico.exe szAppVer : 0.0.0.0 szModName : kernel32.dll szModVer : 5.1.2600.5781 offset : 00012afb Aplicativo com falha MeuServico.exe, versão 0.0.0.0, módulo com falha kernel32.dll, versão 5.1.2600.5781, endereço com falha 0x00012afb. caso eu vá no painel de controle consigo iniciar normalmente o serviço. Alguem pode me ajudar ? O que pode estar faltando? Obrigado
[delphi-br] Problema com ClientDataSet em memoria
Prezados colegas, Ao dar OPEN em um clientdataset em memoria num determinado Form ligando- o ao provider de um datamodule que por sua vez esta ligado a um SQLDataset e a um SqlConect, recebo a seguinte mensagem: missing data provider or data packet Gostaria de saber se é uma limitação ou se estou fazendo algo errado. Abaixo o codigo: var vCds : TClientDataset; begin vCds := TClientDataset.Create(self); vCds.ProviderName := datamodule.dsp; Try vCds.open; Finally freeAndNil(vCds); End; end; Lembrando que utilizo o Delphi 2009. saudações