Fórum soma em DBText #420485

25/07/2012

0

Ola pessoal, mais uma dúvida...

Tenho 4 DBText. Nos tres primeiros consegui montar querys para trazer o total pra cada item. Exemplo abaixo:

DBText1 = query para retornar total para item1;
DBText2 = query para retornar total para item2;
DBText3 = query para retornar total para item3;

O problema esta no DBText4 onde quero que apareça a soma de tudo seguindo a seguinte formula:

DBText4 = ((DBText1 + DBText2) - DBText3);

Se possivel, como faço para limpar a memoria dos dados que digitei em um form de cadastro mas desisti no meio do caminho?

alguem me de uma luz, por favor.
Carlos Magno

Carlos Magno

Responder

Posts

25/07/2012

Joel Rodrigues

Olá, não entendi a segunda pergunta, mas a questão da soma pode ser resolvida da convertendo o texto dos demais DBTexts. Por exemplo:
var
total:double;
begin
total := StrToFloat(DBText1.Text) + StrToFloat(DBText2.Text) + StrToFloat(DBText3.Text);
DBText4.Text := FormatFloat(´#,##0.00´, total);

Isso após definir o texto dos três primeiros componentes.
Boa sorte.
Responder

Gostei + 0

26/07/2012

Carlos Magno

A segunda pergunta é o seguinte...

Quando dou um Append para iniciar um novo cadastro, noto que no dbgrid o cursor indica um novo cadastro. Só que se eu fechar o form de cadastro sem clicar em salvar, os dados digitados ficam la no dbgrid e se eu abrir novamente o form para cadastrar os dados digitados ainda estarão lá. Como fazer para limpa-los.

Colega, criei um outro tópico antes desse e ainda não consegui resolve-lo. Se puder me dar uma ajuda la. o Link segue abaixo:
[url]https://www.devmedia.com.br/forum/aparecer-sinais-+-e-em-numeros/420359[/url]

Valeu pela ajuda que me prestar.
Responder

Gostei + 0

26/07/2012

Bruno Leandro

voce precisa dar um refresh na query, execute o MinhaQuey.Close; MinhaQuery.Open;
Responder

Gostei + 0

26/07/2012

Joel Rodrigues

Para resolver essa situação, você pode verificar se o dataset está em edição/inserção ao fechar o form e cancelar a operação. Por exemplo, no evento OnClose do form você pode definir um código como este:
if query.State in [dsEdit, dsInsert] then
   query.Cancel;


Abraço.
Responder

Gostei + 0

26/07/2012

Carlos Magno

A inserção ou edição não é através de query, e sim de um DataSet
Responder

Gostei + 0

26/07/2012

Joel Rodrigues

Carlos, por DATASET, pode-se entender Query, Table, ClientDataSet, até mesmo StoredProcedures em certas situações. Como o componente mais utilizado é a Query (TQuery, TADOQuery, TIBQuery, TSQLQuery, etc), nós costumamos utilizar essa denominação nos exemplos. Porém, basta você utilizar seu dataset no exemplo dado.
Responder

Gostei + 0

26/07/2012

Carlos Magno

Como disse no outro topico eu sou iniciante.

Eu coloquei o código desta forma:

if dm01.tbl_servico.State in [dsInsert, dsEdit] then
dm01.tbl_servico.Cancel;


Esta dando erro Undeclared indentifier. dsInsert
Responder

Gostei + 0

26/07/2012

William

Acrescente na cláusula Uses do seu form a unit DB...
Responder

Gostei + 0

26/07/2012

Carlos Magno

Wllfl....se você se refere a unit dm01(Data Module), ela ja esta inserida.
Responder

Gostei + 0

26/07/2012

William

Carlos a unit DB faz parte da VCL do delphi, ela dá suporte para o uso da enum[dsInsert, dsEdit, dsInactive] entre outras funções.
Responder

Gostei + 0

26/07/2012

Joel Rodrigues

Carlos, é a unit DB mesmo. No form onde você está usando o [dsInsert, dsEdit]. Acrescente a unit DB à cláusula Uses.
Responder

Gostei + 0

26/07/2012

Carlos Magno

Valeu galera, deu certo....brigadão a todos...agora só falta resolver o outro tópico.

[url]https://www.devmedia.com.br/forum/aparecer-sinais-+-e-em-numeros/420359[/url]
Responder

Gostei + 0

26/07/2012

Carlos Magno

Ola pessoal e em especial os Joel.....sobre a duvida deste tópico sobre soma em DBText, a possível solução postada pelo Joel deu erro: Cannot access protected symbol TControl.Text:


Olá, não entendi a segunda pergunta, mas a questão da soma pode ser resolvida da convertendo o texto dos demais DBTexts. Por exemplo:
#Código

var
total:double;
begin
total := StrToFloat(DBText1.Text) + StrToFloat(DBText2.Text) + StrToFloat(DBText3.Text);
DBText4.Text := FormatFloat(´#,##0.00´, total);

Isso após definir o texto dos três primeiros componentes.
Boa sorte.


Não sei se esqueci de falar, mas os valor são em moeda e os DBText1, DBText2 e DBText3 possuem querys próprias para retorna a soma...


DBText1 = query para retornar total para item1;
DBText2 = query para retornar total para item2;
DBText3 = query para retornar total para item3;

DBText4 = ((DBText1 + DBText2) - DBText3);


seria mais ou menos assim...
DBText1 = R$ 100,00
DBText2 = R$ 350,00
DBText3 = R$ 84,50

DBText4 = (R$ 100,00 + R$ 350,00) - R$84,50)
DBText4 = R$ 365,50
Responder

Gostei + 0

27/07/2012

Joel Rodrigues

Cara, vê se no lugar de Text você pode usar Caption.
Responder

Gostei + 0

27/07/2012

Carlos Magno

Vou tentar isso mais tarde, pois esse projeto esta no meu pc em casa.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar