Como Subtrair Valores

04/03/2013

0

Bom dia pessoal to com pequeno problema, tenho 3 dbedits.

Dbedit1 = a Valor documento
Dbedit2 = a Valor pago
Dbedit3 = a Restante

preciso que quando eu colocar o valor no Dbedit1 e no Dbedit2 ele diminua e mostre no Dbedit3 o restante.
Ex: Dbedit1 = 10,00 - Dbedit2 = 5,00 ai Dbedit3 vai ser igual a 5,00.
neste exemplo o valor do documento é 10,00 e o valor pago foi 5,00 então o restante é 5,00.


Bom eu uso Delphi 2010, banco de dados Firebird, sqlconection, TSQLQuery, ClienteDataset.


Desde já Obrigado!
Francielio Medeiros

Francielio Medeiros

Responder

Posts

04/03/2013

Wilton Júnior

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));
Responder

04/03/2013

Francielio Medeiros

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));


Ok, só mais uma duvida como sou iniciante, onde eu colocaria esse codigo???
Responder

04/03/2013

Wilton Júnior

pode coloca dentro no evento onclick de um botão qualquer, ou no evento onexit do dbedit3 e também pode colocar no evento onchange do DBEdit3.
Responder

04/03/2013

José

Se for utilizar um botão para realizar isso poe dentro do onclick do botão.
que dai ao clicar no botão o DBEdit3.text receberá o resultado do DBEdit1,text - DBEdit2,text
Responder

04/03/2013

Luiz Menin

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));


Só uma correção: como será tratado valores com vírgula, o correto seria:

DBEdit3.text := FloatToStr(StrToFloat(DbEdit1.text) - StrToFloat(DBEdit2.text));


Outra coisa: o evento que você poderia utilizar é no OnExit dos DBEdit1 e DBEdit2.
Responder

04/03/2013

Francielio Medeiros

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));


Ok, só mais uma duvida como sou iniciante, onde eu colocaria esse codigo???


Apresentou o seguinte Erro:
First chance exception at $7608969b. Exception class EConvertError with message ""is not a Valid integer value'. Process MSCeramica.exe (4980)
Responder

04/03/2013

Francielio Medeiros

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));


Só uma correção: como será tratado valores com vírgula, o correto seria:

DBEdit3.text := FloatToStr(StrToFloat(DbEdit1.text) - StrToFloat(DBEdit2.text));


Outra coisa: o evento que você poderia utilizar é no OnExit dos DBEdit1 e DBEdit2.


deu esse erro is not valid floating
Responder

04/03/2013

Francielio Medeiros

Pessoal Lembrando que coloquei no banco os campos como Numeric 14,2....
Responder

04/03/2013

Luiz Menin

Você está colocando algum valor padrão nos Edit's?
Deixe por padrão os valores 0,00.
Responder

04/03/2013

Francielio Medeiros

Você está colocando algum valor padrão nos Edit's?
Deixe por padrão os valores 0,00.


EU ESTOU USANDO DBEDIT

E COLOCO COMO CURRENCY
Responder

04/03/2013

Francielio Medeiros

Mudei no banco de dados para DOUBLE PRECISION...
e ainda continua com o seguinte erro:

"R$ 12,00'is not a valid floating point value'.
Responder

04/03/2013

Francielio Medeiros

Mudei no banco de dados para DOUBLE PRECISION...
e ainda continua com o seguinte erro:

"R$ 12,00'is not a valid floating point value'.



Meu Codigo pessoal


unit U_ContasPG;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, Mask, DBCtrls, FMTBcd, SqlExpr;

type
TF_ContasPG = class(TForm)
Panel2: TPanel;
btn_editar: TBitBtn;
btn_cancelar: TBitBtn;
btn_excluir: TBitBtn;
btn_gravar: TBitBtn;
btn_pesquisar: TBitBtn;
btn_sair: TBitBtn;
btn_novo: TBitBtn;
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
GroupBox2: TGroupBox;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
DBRadioGroup1: TDBRadioGroup;
SP_GEN_CONTASPG: TSQLStoredProc;
procedure btn_sairClick(Sender: TObject);
procedure Desativabtn;
procedure ativabtn;
Procedure ativadbedit;
Procedure desativadbedit;
procedure btn_novoClick(Sender: TObject);
procedure btn_gravarClick(Sender: TObject);
procedure btn_editarClick(Sender: TObject);
procedure btn_cancelarClick(Sender: TObject);
procedure btn_excluirClick(Sender: TObject);
procedure btn_pesquisarClick(Sender: TObject);
procedure DBEdit7KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit10KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit9Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
F_ContasPG: TF_ContasPG;

implementation

uses U_Principal, U_DM, U_PesqCliente, U_PesqContasPG;

{$R *.dfm}

procedure TF_ContasPG.ativabtn;
begin
btn_novo.enabled := True;
btn_editar.enabled := True;
btn_cancelar.enabled := False;
btn_gravar.enabled := False;
btn_excluir.enabled := True;
btn_sair.enabled := True;
btn_pesquisar.enabled := True;
end;

procedure TF_ContasPG.DBEdit10KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Begin
SelectNext(Sender as tWinControl, True, True );
Key := #0;
btn_gravar.SetFocus;
end;
end;

procedure TF_ContasPG.DBEdit7KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Begin
SelectNext(Sender as tWinControl, True, True );
Key := #0;
end;
end;

procedure TF_ContasPG.DBEdit9Exit(Sender: TObject);
begin
DBEdit10.text := FloatToStr(StrToFloat(DbEdit8.text) - StrToFloat(DBEdit9.text));
end;

procedure TF_ContasPG.Desativabtn;
begin
btn_novo.enabled := False;
btn_editar.enabled := False;
btn_cancelar.enabled := True;
btn_gravar.enabled := True;
btn_excluir.enabled := False;
btn_sair.enabled := False;
btn_pesquisar.enabled := False;
end;
procedure TF_ContasPG.ativadbedit;
begin
DBEdit2.enabled := True;
DBEdit3.enabled := True;
DBEdit4.enabled := True;
DBEdit5.enabled := True;
DBEdit6.enabled := True;
DBEdit7.enabled := True;
DBEdit8.enabled := True;
DBEdit9.enabled := True;
DBEdit10.enabled := True;
DBRadioGroup1.Enabled := True;
end;

procedure TF_ContasPG.desativadbedit;
begin
DBEdit2.enabled := False;
DBEdit3.enabled := False;
DBEdit4.enabled := False;
DBEdit5.enabled := False;
DBEdit6.enabled := False;
DBEdit7.enabled := False;
DBEdit8.enabled := False;
DBEdit9.enabled := False;
DBEdit10.enabled := False;
DBRadioGroup1.Enabled := False;

end;

procedure TF_ContasPG.btn_cancelarClick(Sender: TObject);
begin
//BOTÃO CANCELAR//

if DataSource1.DataSet.State in [dsBrowse, dsEdit, dsInsert] then

begin
DM.CDS_CONTASPG.Cancel;
DM.CDS_CONTASPG.ApplyUpdates(-1);
DM.CDS_CONTASPG.Open;
DM.CDS_CONTASPG.close;
ativabtn;
end
else
ShowMessage('Atenção: Favor Executar uma Operação.');
end;

procedure TF_ContasPG.btn_editarClick(Sender: TObject);
begin
DM.CDS_CONTASPG.Edit;
Desativabtn;
ativadbedit;
end;

procedure TF_ContasPG.btn_excluirClick(Sender: TObject);
begin
//Botão Excluir//

if DataSource1.DataSet.State in [dsBrowse, dsEdit] then
begin
DM.CDS_CONTASPG.Delete;
DM.CDS_CONTASPG.ApplyUpdates(0);
DM.CDS_CONTASPG.close;
end;
end;


procedure TF_ContasPG.btn_gravarClick(Sender: TObject);
begin
//Botão Gravar//

if DM.CDS_CONTASPG.State in [dsBrowse, dsEdit, dsInsert] then

begin
DM.CDS_CONTASPG.Post;
DM.CDS_CONTASPG.ApplyUpdates(0);
DM.CDS_CONTASPG.close;
ATIVABTN;
end;
end;

procedure TF_ContasPG.btn_novoClick(Sender: TObject);
//Botão Novo//
var
vID: integer;
begin
with SP_GEN_CONTASPG do
begin
Prepared := True;
ExecProc;
Prepared := False;
vID := ParamByName('ID').Value;
close;
end;
DM.CDS_CONTASPG.Open;
DM.CDS_CONTASPG.Append;
DM.CDS_CONTASPG.FieldByName('ID').AsInteger := vID;
Desativabtn;
ativadbedit;
DBEdit2.SetFocus;
end;

procedure TF_ContasPG.btn_pesquisarClick(Sender: TObject);
begin
// Chamar Pesquisa de Contas a Pagar //

F_PesqContasPG:= TF_PesqContasPG.create(Self);
F_PesqContasPG.ShowModal;
F_PesqContasPG.Release;
F_PesqContasPG.free;

end;

procedure TF_ContasPG.btn_sairClick(Sender: TObject);
begin
F_ContasPG.Close;
end;

end.
Responder

04/03/2013

Luiz Menin

Certo, porém, no momento do cálculo algum valor está incorreto.

Tente desta forma:
DBEdit3.Text := CurrToStr(StrToCurr(DBEdit1.text) - StrToCurr(DBEdit2.text));

Responder

04/03/2013

Francielio Medeiros

Certo, porém, no momento do cálculo algum valor está incorreto.

Tente desta forma:
DBEdit3.Text := CurrToStr(StrToCurr(DBEdit1.text) - StrToCurr(DBEdit2.text));


Persiste o Mesmo Erro!
Responder

04/03/2013

Luiz Menin

Muito estranho isso!
Uma coisa tão simples...
Eu realizei testes aqui utilizando 3 Edit's e funcionou.
Tente fazer de alguma forma diferente: retire a propriedade Currency, mude seus DBEdit's para Edit's, etc. Não insista muito no mesmo erro.

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar