Fórum Somar ou diminuir e o campo resultado destacado #203204
27/12/2003
0
Eh o seguinte uso o delphi 6 e a tabela paradox
Tenho uma tabela com um campo entrada, saida e saldo. Como eh que eu faço para samar as entradas dimuir as saidas e o resultado no campo saldo ficar azul se saldo possitivo e vermelho saldo negativo.
Ufa! para mim que sou iniciante ta dificil, por favor pode me passar com detalhes tipo em que evento propriedades eu devo colocar os parametros.
Obrigado e feliz ano novo
wagnernormando@ig.com.br
Wagner
Curtir tópico
+ 0Posts
27/12/2003
Fórum Vini
coloque uma Query, um Label e um Botão no seu formulário, mude a propriedade DatabaseName do Query1 para o nome do seu Alias e no OnClick do botão, coloque esse código:
var Entradas, Saidas, Saldo: Double; begin Query1.Active:= false; Query1.Sql.Text:= ´Select SUM(Entradas) as SE, Sum(Saidas) as SS from tabela´; Query1.Active:= true; Entradas:= Query1.FieldByName(´SE´).asFloat; Saidas:= Query1.FieldByName(´SS´).asFloat; Saldo:= Entradas - Saidas; if (Saldo > 0) then Label1.Font.Color:= $0000CC; else Label1.Font.Color:= $CC0000; Label1.Caption:= FloatToStr(Saldo);
Gostei + 0
28/12/2003
Wagner
´Pareçe dificil mais não eh facil não´
Como sou iniciante ainda enfrento os problemas com um pouco de cautela eu já tenho em meu formulario um dbedit onde informo entradas e um dbedit onde informo saida e um outro dbedit com o saldo. Funcionaria com a sua dica? o que devo alterar?
Obrigado
Gostei + 0
28/12/2003
Martins
Tente assim:
No Evento OnShow de Um Form q pode ser chamado de ViewBalanco, onde será verificado o balanco de Entradas e Saidas, vc coloca o codigo abaixo:
IbQuery1.Close;
IbQuery1.SQL.Clear;
IbQuery1.SQL.Text:=´Select SUM(Entrada) as SE, SUM(Saida) as SS From Caixa´;
IbQuery1.Open;
IbQuery2.Insert;
IbQuery2Entrdas.Value:=IbQuery1.FieldByName(´SE´).AsFloat;
IbQuery2Saidas.Value:=IbQuery1.fieldByName(´SS´).AsFloat;
IbQuery2Saldo.Value:=IbQuery2Entrdas.Value-IbQuery2Saidas.Value;
if IbQuery2Saldo.Value < 0 then
DbEdit3.Font.Color:=$0000CC
else
DbEdit3.Font.Color:=$CC0000;
IbQuery2.Post;
IbTransaction1.CommitRetaining; //Só se usar o Interbase.
- Coloque 1 Query e um Table;
- Coloque o DBGrid para vizualizar;
- Coloque os DbEdit´s q receberão os valores;
Não Testei esse código, pois no micro onde estou não tenho Delphi instalado, mas deve rodar blz, qualquer coisa poste novamente aqui, com esse humilde exemplo, vc poderá implementar melhor o seu trabalho, desculpe não poder ajudá-lo mais ainda, é que estou queimando a cuca com uns problemas no Server Linux.
T+
Boa Sorte!
MessageDlg(´Que neste ano que se aproxima, possamos nos unir,´+#13+´nos fortalecermos, refletirmos, buscando dentro de nós´+13+ ´A tão sonhada PAZ, pois, só depende de cada um de nós´+13+´Um Feliz 2004 a todos do Clube Delphi e deste Forum´, mtInformation, [mbOk],0);
Gostei + 0
01/01/2004
Wagner
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:=´Select SUM(Entrada) as SE, SUM(Saida) as SS From Caixa´;
Query1.Open;
Query1.Insert;
dbedit4.Text:=Query1.FieldByName(´SE´).Asfloat;
dbedit5.text:=Query1.fieldByName(´SS´).Asfloat;
dbedit6.text:=(dbedit5.Text-dbedit4.Text);
if dbedit6.text < 0 then
DbEdit6.Font.Color:=$0000CC
else
DbEdit6.Font.Color:=$CC0000;
Query1.Post;
Gostei + 0
02/01/2004
Martins
Olha só um detalhe, vc não pode usar string para calculo.
[color=red:13d5162692]
dbedit4.Text:=Query1.FieldByName(´SE´).Asfloat;
dbedit5.text:=Query1.fieldByName(´SS´).Asfloat;
dbedit6.text:=(dbedit5.Text-dbedit4.Text); }
[/color:13d5162692]
vc deve usar DbEdit4.value OK!
ou então tente assim StrToInt(DbEdit4.text).
Mas não acho q funcione, é melhor usar (value), assim vc vai trabalhar com os valores de forma correta.
Qualquer coisa.
Estamos aqui.
Gostei + 0
03/01/2004
Wagner
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:=´Select SUM(Entrada) as SE, SUM(Saida) as SS From Caixa´;
Query1.Open;
Query1.Insert;
dbedit4.value:=Query1.FieldByName(´SE´).Asfloat;
dbedit5.value:=Query1.fieldByName(´SS´).Asfloat;
dbedit6.value:=(dbedit5.Text-dbedit4.Text);
if dbedit6.value < 0 then
DbEdit6.Font.Color:=$0000CC
else
DbEdit6.Font.Color:=$CC0000;
Query1.Post;
end;
[Error] U_livrocaixa.pas(151): Undeclared identifier: ´value´
[Error] U_livrocaixa.pas(152): Undeclared identifier: ´value´
[Error] U_livrocaixa.pas(153): Undeclared identifier: ´value´
[Error] U_livrocaixa.pas(153): Operator not applicable to this operand type
[Error] U_livrocaixa.pas(154): Undeclared identifier: ´value´
[Fatal Error] Admincondo1.dpr(41): Could not compile used unit ´U_livrocaixa.pas´
Gostei + 0
03/01/2004
Martins
Ainda esta dando os erros descritos logo abaixo o que eu estou esquecendo de colocar? begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Text:=´Select SUM(Entrada) as SE, SUM(Saida) as SS From Caixa´; Query1.Open; Query1.Insert; dbedit4.value:=Query1.FieldByName(´SE´).Asfloat; dbedit5.value:=Query1.fieldByName(´SS´).Asfloat; dbedit6.value:=(dbedit5.Text-dbedit4.Text); if dbedit6.value < 0 then DbEdit6.Font.Color:=$0000CC else DbEdit6.Font.Color:=$CC0000; Query1.Post; end; [Error] U_livrocaixa.pas(151): Undeclared identifier: ´value´ [Error] U_livrocaixa.pas(152): Undeclared identifier: ´value´ [Error] U_livrocaixa.pas(153): Undeclared identifier: ´value´ [Error] U_livrocaixa.pas(153): Operator not applicable to this operand type [Error] U_livrocaixa.pas(154): Undeclared identifier: ´value´ [Fatal Error] Admincondo1.dpr(41): Could not compile used unit ´U_livrocaixa.pas´
[color=blue:899a3ab9b0]
Vejamos, o erro mostrado diz q (value) não foi declarado, isso não deve ocorrer se vc estiver utilizando os componentes Dbedit da Paleta Data Controls do DELPHI, por favor verifique se vc está utilizando os componentes corretos, não utilize ´value´ nos componentes EDIT pois eles não o suportam, eu acho q deve ser esse o problema, mas qualquer coisa, poste aqui novamente, vc pode informar tambem seu e-mail para que eu possa lhe enviar um exemplo OK!
[/color:899a3ab9b0]
Gostei + 0
03/01/2004
Wagner
wagnernormando@ig.com.br
ah! quando coloco dessa forma acontece os seguintes erros abaixo
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:=´Select SUM(Entrada) as SE, SUM(Saida) as SS From Caixa´;
Query1.Open;
Query1.Insert;
dbedit4.Text:=Query1.FieldByName(´SE´).Asfloat;
dbedit5.text:=Query1.fieldByName(´SS´).Asfloat;
dbedit6.text:=(dbedit5.Text-dbedit4.Text);
if dbedit6.text < 0 then
DbEdit6.Font.Color:=$0000CC
else
DbEdit6.Font.Color:=$CC0000;
Query1.Post;
end;
[Error] U_livrocaixa.pas(151): Incompatible types: ´String´ and ´Double´
[Error] U_livrocaixa.pas(152): Incompatible types: ´String´ and ´Double´
[Error] U_livrocaixa.pas(153): Operator not applicable to this operand type
[Error] U_livrocaixa.pas(154): Incompatible types: ´String´ and ´Integer´
[Fatal Error] Admincondo1.dpr(41): Could not compile used unit ´U_livrocaixa.pas´
Gostei + 0
03/01/2004
Martins
Veja seu e-mail mais tarde...
Gostei + 0
03/01/2004
Martins
Gostei + 0
03/01/2004
Wagner
Nesta dica da um erro que tabela não existe
// var
// Entradas, Saidas, Saldo: Double;
begin
// Query1.Active:= false;
// Query1.Sql.Text:= ´Select SUM(Entradas) as SE, Sum(Saidas) as SS from tabela´;
// Query1.Active:= true;
// Entradas:= Query1.FieldByName(´SE´).asFloat;
// Saidas:= Query1.FieldByName(´SS´).asFloat;
// Saldo:= Entradas - Saidas;
// if (Saldo > 0) then
// Label1.Font.Color:= $0000CC
// else
// Label1.Font.Color:= $CC0000;
// Label1.Caption:= FloatToStr(Saldo);
project admincondo.exe raised exception class edbengineerro with message table does not exist
file c:\arq..prog..\admicondo1\tabela.db
file c:\arq..prog..\admicondo1\tabela.bdf
file c:\arq..prog..\admicondo1\tabela.txt
E o outro exemplo é muito complicado, eu gostaria de uma coisa mais simples se puder tipo
Entradas + saldo
Saidas - saldo
dbedit3:= saidas -saldo + entradas // bom! que no dbedit ou edit ou ate mesmo label me mostre o resultado do que entrou e saiu
(entradas acrescenta ao saldo, saida diminui do saldo e assim me sa uma cor para saldo negativo e possito (as dicas dadas esta faltando pouco para ser resolvida esta quase dando certo mais eu gostaria de ajuda para desvendar esse erros
Gostei + 0
04/01/2004
Wagner
var
Entrada, Saida, Saldo: Double;
begin
Query1.Active:= false;
Query1.Sql.Text:= ´Select SUM(Entrada) as SE, Sum(Saida) as SS from livrocaixa1´;
Query1.Active:= true;
Entrada:= Query1.FieldByName(´SE´).asFloat;
Saida:= Query1.FieldByName(´SS´).asFloat;
//Saldo:= Entrada - Saida;(tirei isso porque não estava dando certo)
saldo:= strtofloat (t_livrocaixa[´entrada´] + t_livrocaixa[´saldo´] - t_livrocaixa[´saida´]);
if (Saldo > 0) then
dbedit6.Font.Color:= $0000CC
else
dbedit6.Font.Color:= $CC0000;
dbedit6.text:= FloatToStr(Saldo);
end;
dessa forma (saldo:= strtofloat) da um erro na hora que entro no formulário “ conversão do tipo variante invalido”
e dessa forma (saldo:=floattostr) da os erros abaixo
[Error] U_livrocaixa.pas(154): Incompatible types: ´Double´ and ´String´
[Fatal Error] Admincondo1.dpr(41): Could not compile used unit ´U_livrocaixa.pas´
Gostei + 0
05/01/2004
Wagner
Gostei + 0
05/01/2004
Aroldo Zanela
Considerando que dbEdit6 é um componente Data-Aware, deve estar ´conectado´ a sua query via DataSource, então basta:
begin // Obtem o valor das entradas e saídas da tabela LIVROCAIXA1 Query1.Close; Query1.Sql.Text:= ´Select (SUM(Entrada) - Sum(Saida)) as SaldoTotal from livrocaixa1´; Query1.Open; // Se nSaldo maior que zero if ( Query1.FieldByName(´SaldoTotal´).Value > 0) then dbedit6.Font.Color:= $0000CC else // Senão dbedit6.Font.Color:= $CC0000; end;
Gostei + 0
07/01/2004
Wagner
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)