GARANTIR DESCONTO

Fórum Somar ou diminuir e o campo resultado destacado #203204

27/12/2003

0

Olá pessoal

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

Wagner

Responder

Posts

27/12/2003

Fórum Vini

Olá,
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);



Responder

Gostei + 0

28/12/2003

Wagner

Cara, diz um nosso amigo do forum

´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


Responder

Gostei + 0

28/12/2003

Martins

Ilmo. Wagner!!

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);


Responder

Gostei + 0

01/01/2004

Wagner

Cara eu fiz dessa forma mais ainda nao deu certo, o que eu estou fazendo de errado


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;


Responder

Gostei + 0

02/01/2004

Martins

Qual é o erro q dá?

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.


Responder

Gostei + 0

03/01/2004

Wagner

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´


Responder

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]


Responder

Gostei + 0

03/01/2004

Wagner

Se puder mandar eu agradeço

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´


Responder

Gostei + 0

03/01/2004

Martins

Certo, pode deixar q te mando um exemplo básico, na mesma estrutura q queres OK!

Veja seu e-mail mais tarde...


Responder

Gostei + 0

03/01/2004

Martins

Meu nobre, peço desculpas por lhe informar códigos erroneos, é que ando meio confuso com algumas paradas loucas q andam acontecendo aqui no PC, mas já estou resolvendo isso, acesse o seu e-mail OK!


Responder

Gostei + 0

03/01/2004

Wagner

Obrigado a todos pelas dicas, paciência, e ate mesmo os exemplos enviados, mais ainda não consegui resolver meu problema

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


Responder

Gostei + 0

04/01/2004

Wagner

Ops! Melhorou parece que surgiu uma luz no fim do túnel eu fiz algumas alterações, mais ainda da uns errinhos fácil de se resolver :D para vocês e claro :lol:

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´


Responder

Gostei + 0

05/01/2004

Wagner

Continua o problema ai. so acesso o forum nos fins de semana já que minha conexão e discada sai mais barato :lol: sou vou puder olhar agora no proximo fim de semana, enquanto isso quebro minha cabeça, uma boa semana a todos saude e paz o resto a gente corre atras


Responder

Gostei + 0

05/01/2004

Aroldo Zanela

Colega,

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;



Responder

Gostei + 0

07/01/2004

Wagner

Vou tentar


Responder

Gostei + 0

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

Aceitar