Fórum ListBox receber campos agregados apenas uma vez? #344279
08/08/2007
0
Mais no ListBox preciso que mostre apenas uma linha o funcionario e os campos que contem proventos e descontos deste funcionario, acrescentando o campo agregado no final.
Com os funcionarios e inclusive empresas que pego de outra tabela mostra certinho no listbox, agora as funcoes agregadas nao mostra.
O que esta errado neste codigo? Como posso mostrar os campos, [b:8a5022f4a4]aliquota_inss, total_inss, totoprov, totdesc, saldo[/b:8a5022f4a4] apenas uma vez na lista do listbox?
Fiz assim
var
Func, Empresa, vInss, TotProv, TotDesc, vSaldo, vSalario, vProventos, VDescontos : String;
I : Integer;
begin
{Chama o Select}
ChamaSP;
//Limpa o ListBox
listbox2.clear;
try
dm.zspSomaFunc.DisableControls;
dm.zspSomaFunc.First;
Empresa := #121415;
while not dm.zspSomaFunc.Eof do
begin
if Empresa <> dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString then
begin
if Empresa <> 121415 then
ListBox2.Items.Add(´´);
Empresa := dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString ;
dm.qEmpresa.Open; //abre a tabela qEmpresa
if dm.qEmpresa.Locate(´id_EMPRESA´, Empresa, []) then
Func := dm.qEmpresa.fieldbyname(´empresa´).AsString
else Func := ´Empresa não cadastrada´;
ListBox2.Items.Add(´================================================================================´);
ListBox2.Items.Add(´Data que foi gerada a Folha : ´ + ´ - ´ + DateToStr(now) + ´ - ´ + TimeToStr(now));
ListBox2.Items.Add(´================================================================================´);
ListBox2.Items.Add(Empresa + ´ - ´ + Func);
ListBox2.Items.Add(´================================================================================´);
Func := #121415;
end;
if Func <> dm.zspSomaFunc.fieldbyname(´id_func´).AsString then
begin
if Func <> 121415 then
ListBox2.Items.Add(´********************************************************************************´);
Func := dm.zspSomaFunc.fieldbyname(´id_func´).AsString;
ListBox2.Items.Add(Func + ´ - ´ + dm.zspSomaFunc.fieldbyname(´nome´).AsString);
vSalario:=FormatFloat(´,0.00;(,0.00)´,StrToFloat(dm.zspSomaFunc.fieldbyname(´salario´).AsString));
ListBox2.Items.Add(´Salario Base para Calculos: ´ + vSalario);
ListBox2.Items.Add(´Proventos/Descontos Ativos:´);
ListBox2.Items.Add(´================================================================================´);
vINSS := #121415;
TotProv := 121415;
TotDesc := 121415;
vSaldo := 121415;
end;
vProventos:=FormatFloat(´,0.00;(,0.00)´,StrToFloat(dm.zspSomaFunc.fieldbyname(´Proventos´).asString));
vDescontos:=FormatFloat(´,0.00;(,0.00)´,StrToFloat(dm.zspSomaFunc.fieldbyname(´Descontos´).asString));
//passa para o listbox o valor do dbgrid
ListBox2.Items.Add(dm.zspSomaFunc.fieldbyname(´id_formula´).AsString +´ - ´
+dm.zspSomaFunc.fieldbyname(´descricao´).AsString +´ ´
+dm.zspSomaFunc.fieldbyname(´calculo´).asString +´ ´
+vProventos+´ ´
+vDescontos);
if vINSS <> dm.zspSomaFunc.fieldbyname(´valor_inss´).AsString then
begin
if vINSS <> #121415 then
ListBox2.Items.Add(´Desconto do INSS´ +´ ´+dm.zspSomaFunc.fieldbyname(´aliquota_inss´).asString+´ ´+dm.zspSomaFunc.fieldbyname(´valor_inss´).asString);
// ListBox2.Items.Add(´================================================================================´);
end;
if TotProv <> dm.zspSomaFunc.fieldbyname(´totoprov´).AsString then
begin
if TotProv <> 121415 then
ListBox2.Items.Add(´Total dos Proventos ´ +´ ´+dm.zspSomaFunc.fieldbyname(´totoprov´).asString);
end;
if TotDesc <> dm.zspSomaFunc.fieldbyname(´totdesc´).AsString then
begin
if TotDesc <> #121415 then
ListBox2.Items.Add(´Total dos Desconto ´ +´ ´+dm.zspSomaFunc.fieldbyname(´totdesc´).asString);
end;
if vsaldo <> dm.zspSomaFunc.fieldbyname(´saldo´).AsString then
begin
if vsaldo <> 121415 then
ListBox2.Items.Add(´Total Liquido da Folha´ +´ ´+dm.zspSomaFunc.fieldbyname(´saldo´).asString);
end;
dm.zspSomaFunc.Next;
end;
finally
dm.zspSomaFunc.enablecontrols;
end;
ListBox2.Items.Add(´*****************************FIM DO RELATORIO***********************************´);
Por que essa parte nao mostra no ListBox?
Essa parte vem somando os valores de um SP por isso repete, e eu quero que mostre apenas uma vez no ListBox, como foi feito com a empresa e funcionarios.
Adriano_servitec
Curtir tópico
+ 0Posts
08/08/2007
Emerson Nascimento
var
Func, Empresa, vInss, TotProv, TotDesc, vSaldo, vSalario, vProventos, VDescontos : String;
I : Integer;
begin
{Chama o Select}
ChamaSP;
//Limpa o ListBox
listbox2.clear;
try
dm.zspSomaFunc.DisableControls;
dm.zspSomaFunc.First;
Empresa := #121415;
while not dm.zspSomaFunc.Eof do
begin
if Empresa <> dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString then
begin
if Empresa <> 121415 then
ListBox2.Items.Add(´´);
Empresa := dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString ;
dm.qEmpresa.Open; //abre a tabela qEmpresa
if dm.qEmpresa.Locate(´id_EMPRESA´, Empresa, []) then
Func := dm.qEmpresa.fieldbyname(´empresa´).AsString
else
Func := ´Empresa não cadastrada´;
ListBox2.Items.Add(StringOfChar(´=´, 80));
ListBox2.Items.Add(´Data que foi gerada a Folha : ´
+´ - ´+DateToStr(now)
+´ - ´+TimeToStr(now));
ListBox2.Items.Add(StringOfChar(´=´, 80));
ListBox2.Items.Add(Empresa + ´ - ´ + Func);
ListBox2.Items.Add(StringOfChar(´=´, 80));
Func := 121415;
end;
if Func <> dm.zspSomaFunc.fieldbyname(´id_func´).AsString then
begin
if Func <> 121415 then
ListBox2.Items.Add(StringOfChar(´*´, 80));
Func := dm.zspSomaFunc.fieldbyname(´id_func´).AsString;
vSalario := FormatFloat(´#,0.00;(,0.00)´,
StrToFloat(dm.zspSomaFunc.fieldbyname(´salario´).AsString));
ListBox2.Items.Add(Func + ´ - ´ + dm.zspSomaFunc.fieldbyname(´nome´).AsString);
ListBox2.Items.Add(´Salario Base para Calculos: ´ + vSalario);
ListBox2.Items.Add(´Proventos/Descontos Ativos:´);
ListBox2.Items.Add(StringOfChar(´=´, 80));
vINSS := 121415;
TotProv := 121415;
TotDesc := 121415;
vSaldo := 121415;
end;
vProventos := FormatFloat(´,0.00;(,0.00)´,
StrToFloat(dm.zspSomaFunc.fieldbyname(´Proventos´).asString));
vDescontos := FormatFloat(´,0.00;(,0.00)´,
StrToFloat(dm.zspSomaFunc.fieldbyname(´Descontos´).asString));
//passa para o listbox o valor do dbgrid
ListBox2.Items.Add(dm.zspSomaFunc.fieldbyname(´id_formula´).AsString +´ - ´
+dm.zspSomaFunc.fieldbyname(´descricao´).AsString +´ ´
+dm.zspSomaFunc.fieldbyname(´calculo´).asString +´ ´
+vProventos+´ ´
+vDescontos);
if vINSS <> dm.zspSomaFunc.fieldbyname(´valor_inss´).AsString then
begin
if vINSS <> #121415 then
ListBox2.Items.Add(´Desconto do INSS´ +´ ´
+dm.zspSomaFunc.fieldbyname(´aliquota_inss´).asString
+´ ´+dm.zspSomaFunc.fieldbyname(´valor_inss´).asString);
// ListBox2.Items.Add(StringOfChar´=´, 80));
end;
if TotProv <> dm.zspSomaFunc.fieldbyname(´totoprov´).AsString then
begin
if TotProv <> 121415 then
ListBox2.Items.Add(´Total dos Proventos ´
+dm.zspSomaFunc.fieldbyname(´totoprov´).asString);
end;
if TotDesc <> dm.zspSomaFunc.fieldbyname(´totdesc´).AsString then
begin
if TotDesc <> #121415 then
ListBox2.Items.Add(´Total dos Desconto ´
+dm.zspSomaFunc.fieldbyname(´totdesc´).asString);
end;
if vsaldo <> dm.zspSomaFunc.fieldbyname(´saldo´).AsString then
begin
if vsaldo <> 121415 then
ListBox2.Items.Add(´Total Liquido da Folha ´
+dm.zspSomaFunc.fieldbyname(´saldo´).asString);
end;
dm.zspSomaFunc.Next;
end;
finally
dm.zspSomaFunc.enablecontrols;
end;
ListBox2.Items.Add(StringOfChar(´*´, 32)+´FIM DO RELATORIO´+StringOfChar(´*´, 32));
end;obs.: o uso da função StringOfChar() não traz qualquer ganho à rotina. eu só a coloquei para que o código fique um pouco mais enxuto e de fácil leitura, devido as limitações de largura da página do fórum.
Gostei + 0
09/08/2007
Adriano_servitec
Agora no ListBox esta mostrando assim
Gostei + 0
09/08/2007
Adriano_servitec
Gostei + 0
09/08/2007
Emerson Nascimento
veja se desta forma funciona:
var
Func, Empresa, vInss, TotProv, TotDesc,
vSaldo, vSalario, vProventos, VDescontos: String;
I: Integer;
begin
{Chama o Select}
ChamaSP;
//Limpa o ListBox
listbox2.clear;
try
dm.zspSomaFunc.DisableControls;
dm.zspSomaFunc.First;
Empresa := #121415;
while not dm.zspSomaFunc.Eof do
begin
if Empresa <> dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString then
begin
if Empresa <> 121415 then
ListBox2.Items.Add(´´);
Empresa := dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString;
dm.qEmpresa.Open; //abre a tabela qEmpresa
if dm.qEmpresa.Locate(´id_EMPRESA´, Empresa, []) then
Func := dm.qEmpresa.fieldbyname(´empresa´).AsString
else
Func := ´Empresa não cadastrada´;
ListBox2.Items.Add(StringOfChar(´=´, 80));
ListBox2.Items.Add(´Data que foi gerada a Folha : ´
+´ - ´+DateToStr(now)
+´ - ´+TimeToStr(now));
ListBox2.Items.Add(StringOfChar(´=´, 80));
ListBox2.Items.Add(Empresa + ´ - ´ + Func);
ListBox2.Items.Add(StringOfChar(´=´, 80));
Func := 121415;
end;
if Func <> dm.zspSomaFunc.fieldbyname(´id_func´).AsString then
begin
Func := dm.zspSomaFunc.fieldbyname(´id_func´).AsString;
// o salário já vem como tipo numérico!
vSalario := FormatFloat(´#,0.00;(,0.00)´,
dm.zspSomaFunc.fieldbyname(´salario´).AsFloat);
ListBox2.Items.Add(Func + ´ - ´ + dm.zspSomaFunc.fieldbyname(´nome´).AsString);
ListBox2.Items.Add(´Salario Base para Calculos: ´ + vSalario);
ListBox2.Items.Add(´Proventos/Descontos Ativos:´);
ListBox2.Items.Add(StringOfChar(´=´, 80));
vINSS := +dm.zspSomaFunc.fieldbyname(´aliquota_inss´).asString
+´ ´+dm.zspSomaFunc.fieldbyname(´valor_inss´).asString;
TotProv := dm.zspSomaFunc.fieldbyname(´totoprov´).asString;
TotDesc := dm.zspSomaFunc.fieldbyname(´totdesc´).asString;
vSaldo := dm.zspSomaFunc.fieldbyname(´saldo´).asString;
end;
vProventos := FormatFloat(´,0.00;(,0.00)´,
dm.zspSomaFunc.fieldbyname(´Proventos´).AsFloat);
vDescontos := FormatFloat(´#,0.00;(,0.00)´,
dm.zspSomaFunc.fieldbyname(´Descontos´).AsFloat);
//passa para o listbox o valor do dbgrid
ListBox2.Items.Add(dm.zspSomaFunc.fieldbyname(´id_formula´).AsString +´ - ´
+dm.zspSomaFunc.fieldbyname(´descricao´).AsString +´ ´
+dm.zspSomaFunc.fieldbyname(´calculo´).asString +´ ´
+vProventos+´ ´
+vDescontos);
dm.zspSomaFunc.Next;
if dm.zspSomaFunc.Eof or
(Empresa <> dm.zspSomaFunc.fieldbyname(´id_EMPRESA´).AsString) or
(Func <> dm.zspSomaFunc.fieldbyname(´id_func´).AsString) then
begin
ListBox2.Items.Add(´Desconto do INSS ´+vINSS);
ListBox2.Items.Add(´Total dos Proventos ´+TotProv);
ListBox2.Items.Add(´Total dos Desconto ´+TotDesc);
ListBox2.Items.Add(´Total Liquido da Folha ´+vSaldo);
if not dm.zspSomaFunc.Eof then
ListBox2.Items.Add(StringOfChar(´*´, 80));
end;
end;
finally
dm.zspSomaFunc.Enablecontrols;
end;
ListBox2.Items.Add(StringOfChar(´*´, 32)+´FIM DO RELATORIO´+StringOfChar(´*´, 32));
end;Gostei + 0
09/08/2007
Adriano_servitec
Muito obrigado
Valeu
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)