Como Subtrair Valores

04/03/2013

6

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!
Responder

Posts

04/03/2013

Wilton Júnior

Acho que é isso que vc precisa:

DBEdit3.text := IntToStr(StrToInt(DbEdit1.text) - StrToInt(DBEdit2.text));
Responder
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
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
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
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
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
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
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
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