Somar ou diminuir e o campo resultado destacado
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
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
Curtidas 0
Respostas
Fórum Vini
27/12/2003
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:
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
Wagner
27/12/2003
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
´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
Martins
27/12/2003
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);
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
Wagner
27/12/2003
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;
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
Martins
27/12/2003
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.
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
Wagner
27/12/2003
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´
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
Martins
27/12/2003
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
Wagner
27/12/2003
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´
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
Martins
27/12/2003
Certo, pode deixar q te mando um exemplo básico, na mesma estrutura q queres OK!
Veja seu e-mail mais tarde...
Veja seu e-mail mais tarde...
GOSTEI 0
Martins
27/12/2003
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!
GOSTEI 0
Wagner
27/12/2003
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
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
Wagner
27/12/2003
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´
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
Wagner
27/12/2003
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
GOSTEI 0
Aroldo Zanela
27/12/2003
Colega,
Considerando que dbEdit6 é um componente Data-Aware, deve estar ´conectado´ a sua query via DataSource, então basta:
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
Wagner
27/12/2003
Vou tentar
GOSTEI 0
Bilatto
27/12/2003
8) Vi sua mensagem no fórum e pensei que já tivesse sido resolvido o seu problema. Isto que você quer é igual ao que eu faço no meu programa de Caixa, só que em Clipper e funciona desde 1991. Se for possível me envie os fontes da unit que está com problemas, ou do aplicativo para analise. Eu não uso rotinas com SQL, e os arquivos Paradox que você usa não precisam ter muitos registros, somente uns 10 ou 20 para ver se faço funcionar.
Espero poder ajudar, em Clipper sei que funciona, em Delphi deveria ser mais fácil. Espero sua resposta.
Espero poder ajudar, em Clipper sei que funciona, em Delphi deveria ser mais fácil. Espero sua resposta.
GOSTEI 0