Array?
[color=darkred:c1a392e4d1]Galera eu preciso de uma ajuda... Bom, estou fazendo uma rotina de calculo de comissão. Tenho um serviço, onde mais de uma pessoa pode ser comissionada.
Ex: Serviço 1
Comis 1: João
Comis 2: Maria
Serviço 2
Comis 1: Maria
Bem, o meu problema, é que quando eu pesquiso a ´Maria´, todos os lugares onde a Maria está, aparece e traz junto todo mundo que está no mesmo serviço. Nesse caso, me retornaria então: Maria e João.
Preciso retornar apenas a Maria.
Pensei em usar um array, mas tentei fazer pelo nome, e não consegui.
Alguém tem como me ajudar?
[/color:c1a392e4d1]
Ex: Serviço 1
Comis 1: João
Comis 2: Maria
Serviço 2
Comis 1: Maria
Bem, o meu problema, é que quando eu pesquiso a ´Maria´, todos os lugares onde a Maria está, aparece e traz junto todo mundo que está no mesmo serviço. Nesse caso, me retornaria então: Maria e João.
Preciso retornar apenas a Maria.
Pensei em usar um array, mas tentei fazer pelo nome, e não consegui.
Alguém tem como me ajudar?
[/color:c1a392e4d1]
Gabriela Miglioli
Curtidas 0
Respostas
Marco Salles
27/09/2007
Bem, o meu problema, é que quando eu pesquiso a "Maria", todos os lugares onde a Maria está, aparece e traz junto todo mundo que está no mesmo serviço.
engraçado , parece que voce esta pesquisando pelo servivo e não pelo Nome :cry:
Como voce esta fazendo esta pesquisa :?:
GOSTEI 0
Gabriela Miglioli
27/09/2007
[color=darkred:ce6e03651e]A pesquisa é pelo serviço e pelo vendedor, o usuário escolhe...
Tenho um edit para localizar o vendedor e outro para localizar o serviço... os resultados são exibidos em um grid.
Entendeu?
[/color:ce6e03651e]
Tenho um edit para localizar o vendedor e outro para localizar o serviço... os resultados são exibidos em um grid.
Entendeu?
[/color:ce6e03651e]
GOSTEI 0
Marco Salles
27/09/2007
A pesquisa é pelo serviço e pelo vendedor, o usuário escolhe...
Tenho um edit para localizar o vendedor e outro para localizar o serviço... os resultados são exibidos em um grid.
Entendeu?
hummmmmm
mas voce tem dois campos... Um de servico e outro de NomeComissionado seria isto ????
se for isto qual é o seu código , que voce esta uzando para realizar esta pesquisa ????
GOSTEI 0
Gabriela Miglioli
27/09/2007
[color=darkred:32d82e8554]Na verdade eu tenho um monte de campos... bom, vou passar o código...
[b:32d82e8554] cdsPrincipal.CommandText :=´SELECT mb.CC_IDCPR, mb.cc_idcpr_mb,mb.CC_STATUS,mb.CC_VALOR,´+
´ mb.CC_DESCONTO,mb.CC_ACRESCIMO,o.cc_idorc,o.CC_COD, o.CC_DATACONF, SUM(oi.CC_VALOR) VALOR, o.CC_DATACONF,o.CC_COMIS1,o.CC_COMIS2,o.CC_COMIS3, ´+
´ o.CC_COMIS4,o.CC_COMIS5,o.CC_COMIS6,o.CC_COMIS7,o.CC_COMIS8,o.CC_COMIS9,o.CC_COMIS10, ´+
´ c1.CC_APELIDO VEND1, c2.CC_APELIDO VEND2, c3.CC_APELIDO VEND3, ´+
´ c4.CC_APELIDO VEND4, c5.CC_APELIDO VEND5, c6.CC_APELIDO VEND6, ´+
´ c7.CC_APELIDO VEND7, c8.CC_APELIDO VEND8, c9.CC_APELIDO VEND9, ´+
´ c10.CC_APELIDO VEND10 ´+
´ FROM ORC o ´+
´ JOIN ORC_ITENS oi ON (o.CC_IDORC = oi.CC_IDORC ) ´+
´ LEFT JOIN CLIFOR c1 ON (o.CC_IDVEND1=c1.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c2 ON (o.CC_IDVEND2=c2.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c3 ON (o.CC_IDVEND3=c3.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c4 ON (o.CC_IDVEND4=c4.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c5 ON (o.CC_IDVEND5=c5.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c6 ON (o.CC_IDVEND6=c6.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c7 ON (o.CC_IDVEND7=c7.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c8 ON (o.CC_IDVEND8=c8.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c9 ON (o.CC_IDVEND9=c9.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c10 ON (o.CC_IDVEND10=c10. CC_IDCLIFOR) ´+
´ LEFT JOIN CPR_MB mb ON (o.CC_IDORC=mb.CC_IDDOCCOMIS) ´+
´ LEFT JOIN CPR cp ON (mb.CC_IDCPR=cp.CC_IDCPR) ´+
´ WHERE (o.CC_DATACONF BETWEEN :daEmissao AND :AteEmissao)´ +
´ AND (o.CC_COD BETWEEN :edFile AND :edAteFile) ´+
´ AND ( ´+
´ (CC_IDVEND1 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND2 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND3 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND4 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND5 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND6 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND7 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND8 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND9 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND10 BETWEEN :edCodVend AND :edAteCodVen) ´+
´ ) ´+
´ GROUP BY mb.CC_IDCPR,mb.CC_STATUS,mb.cc_idcpr_mb,o.CC_COD,mb.CC_VALOR,mb.CC_DESCONTO,o.cc_idorc, ´+
´ mb.CC_ACRESCIMO,o.CC_DATACONF,o.CC_IDVEND1,o.CC_IDVEND2,o.CC_IDVEND3,o.CC_IDVEND4,o.CC_IDVEND5,o.CC_IDVEND6,o.CC_IDVEND7, ´+
´ o.CC_IDVEND8,o.CC_IDVEND9,o.CC_IDVEND10,o.CC_COMIS1,o.CC_COMIS2, o.CC_COMIS3,o.CC_COMIS4, ´+
´ o.CC_COMIS5,o.CC_COMIS6,o.CC_COMIS7,o.CC_COMIS8,o.CC_COMIS9,o.CC_COMIS10, ´+
´ c1.CC_APELIDO, c2.CC_APELIDO, c3.CC_APELIDO, c4.CC_APELIDO, c5.CC_APELIDO, c6.CC_APELIDO, ´+
´ c7.CC_APELIDO, c8.CC_APELIDO, c9.CC_APELIDO, c10.CC_APELIDO, o.CC_DATACONF ´;
cdsPrincipal.Params.ParamByName(´daEmissao´).AsDate := dtDaEmissao.DateTime ;
cdsPrincipal.Params.ParamByName(´AteEmissao´).AsDate := dtAteEmissao.DateTime ;
cdsPrincipal.Params.ParamByName(´edAteCodVen´).AsString := edAteCodVen.Text;
cdsPrincipal.Params.ParamByName(´edCodVend´).AsString := edCodVend.Text;
cdsPrincipal.Params.ParamByName(´edFile´).AsString := edFile.Text ;
cdsPrincipal.Params.ParamByName(´edAteFile´).AsString := edAteFile.Text;
cdsPrincipal.Open;
cdsComis.Close;
cdsComis.CreateDataSet ;
//Aqui é onde estou tentando filtrar...
while not cdsPrincipal.Eof do
begin
for i := 1 to 10 do
begin
if (cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString <> ´´) then
begin
cdsComis.Append;
cdsComisFile.AsInteger := cdsPrincipal.FieldByName(´CC_COD´).AsInteger;
cdsComisEmissao.AsDateTime := cdsPrincipal.FieldByName(´CC_DATACONF´).AsDateTime;
cdsComisVendedor.AsString := cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString;
cdsComisPorcComis.AsFloat := cdsPrincipal.FieldByName(´CC_COMIS´+InTtoStr(i)).AsFloat ;
cdsComisComissao.AsFloat := (cdsComisPorcComis.AsFloat*cdsPrincipal.FieldByName(´VALOR´).AsFloat) /100 ;
cdsComisTotal.AsFloat := cdsPrincipal.FieldByName(´VALOR´).AsFloat;
cdsComisID_Cpr_Mb.AsInteger := cdsPrincipal.FieldByName(´CC_IDCPR_MB´).AsInteger;
cdsComisStatus.AsString := cdsPrincipal.FieldByName(´CC_STATUS´).AsString;
end;
end;
[/b:32d82e8554]
[/color:32d82e8554]
[b:32d82e8554] cdsPrincipal.CommandText :=´SELECT mb.CC_IDCPR, mb.cc_idcpr_mb,mb.CC_STATUS,mb.CC_VALOR,´+
´ mb.CC_DESCONTO,mb.CC_ACRESCIMO,o.cc_idorc,o.CC_COD, o.CC_DATACONF, SUM(oi.CC_VALOR) VALOR, o.CC_DATACONF,o.CC_COMIS1,o.CC_COMIS2,o.CC_COMIS3, ´+
´ o.CC_COMIS4,o.CC_COMIS5,o.CC_COMIS6,o.CC_COMIS7,o.CC_COMIS8,o.CC_COMIS9,o.CC_COMIS10, ´+
´ c1.CC_APELIDO VEND1, c2.CC_APELIDO VEND2, c3.CC_APELIDO VEND3, ´+
´ c4.CC_APELIDO VEND4, c5.CC_APELIDO VEND5, c6.CC_APELIDO VEND6, ´+
´ c7.CC_APELIDO VEND7, c8.CC_APELIDO VEND8, c9.CC_APELIDO VEND9, ´+
´ c10.CC_APELIDO VEND10 ´+
´ FROM ORC o ´+
´ JOIN ORC_ITENS oi ON (o.CC_IDORC = oi.CC_IDORC ) ´+
´ LEFT JOIN CLIFOR c1 ON (o.CC_IDVEND1=c1.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c2 ON (o.CC_IDVEND2=c2.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c3 ON (o.CC_IDVEND3=c3.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c4 ON (o.CC_IDVEND4=c4.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c5 ON (o.CC_IDVEND5=c5.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c6 ON (o.CC_IDVEND6=c6.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c7 ON (o.CC_IDVEND7=c7.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c8 ON (o.CC_IDVEND8=c8.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c9 ON (o.CC_IDVEND9=c9.CC_IDCLIFOR) ´+
´ LEFT JOIN CLIFOR c10 ON (o.CC_IDVEND10=c10. CC_IDCLIFOR) ´+
´ LEFT JOIN CPR_MB mb ON (o.CC_IDORC=mb.CC_IDDOCCOMIS) ´+
´ LEFT JOIN CPR cp ON (mb.CC_IDCPR=cp.CC_IDCPR) ´+
´ WHERE (o.CC_DATACONF BETWEEN :daEmissao AND :AteEmissao)´ +
´ AND (o.CC_COD BETWEEN :edFile AND :edAteFile) ´+
´ AND ( ´+
´ (CC_IDVEND1 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND2 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND3 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND4 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND5 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND6 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND7 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND8 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND9 BETWEEN :edCodVend AND :edAteCodVen) OR ´+
´ (CC_IDVEND10 BETWEEN :edCodVend AND :edAteCodVen) ´+
´ ) ´+
´ GROUP BY mb.CC_IDCPR,mb.CC_STATUS,mb.cc_idcpr_mb,o.CC_COD,mb.CC_VALOR,mb.CC_DESCONTO,o.cc_idorc, ´+
´ mb.CC_ACRESCIMO,o.CC_DATACONF,o.CC_IDVEND1,o.CC_IDVEND2,o.CC_IDVEND3,o.CC_IDVEND4,o.CC_IDVEND5,o.CC_IDVEND6,o.CC_IDVEND7, ´+
´ o.CC_IDVEND8,o.CC_IDVEND9,o.CC_IDVEND10,o.CC_COMIS1,o.CC_COMIS2, o.CC_COMIS3,o.CC_COMIS4, ´+
´ o.CC_COMIS5,o.CC_COMIS6,o.CC_COMIS7,o.CC_COMIS8,o.CC_COMIS9,o.CC_COMIS10, ´+
´ c1.CC_APELIDO, c2.CC_APELIDO, c3.CC_APELIDO, c4.CC_APELIDO, c5.CC_APELIDO, c6.CC_APELIDO, ´+
´ c7.CC_APELIDO, c8.CC_APELIDO, c9.CC_APELIDO, c10.CC_APELIDO, o.CC_DATACONF ´;
cdsPrincipal.Params.ParamByName(´daEmissao´).AsDate := dtDaEmissao.DateTime ;
cdsPrincipal.Params.ParamByName(´AteEmissao´).AsDate := dtAteEmissao.DateTime ;
cdsPrincipal.Params.ParamByName(´edAteCodVen´).AsString := edAteCodVen.Text;
cdsPrincipal.Params.ParamByName(´edCodVend´).AsString := edCodVend.Text;
cdsPrincipal.Params.ParamByName(´edFile´).AsString := edFile.Text ;
cdsPrincipal.Params.ParamByName(´edAteFile´).AsString := edAteFile.Text;
cdsPrincipal.Open;
cdsComis.Close;
cdsComis.CreateDataSet ;
//Aqui é onde estou tentando filtrar...
while not cdsPrincipal.Eof do
begin
for i := 1 to 10 do
begin
if (cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString <> ´´) then
begin
cdsComis.Append;
cdsComisFile.AsInteger := cdsPrincipal.FieldByName(´CC_COD´).AsInteger;
cdsComisEmissao.AsDateTime := cdsPrincipal.FieldByName(´CC_DATACONF´).AsDateTime;
cdsComisVendedor.AsString := cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString;
cdsComisPorcComis.AsFloat := cdsPrincipal.FieldByName(´CC_COMIS´+InTtoStr(i)).AsFloat ;
cdsComisComissao.AsFloat := (cdsComisPorcComis.AsFloat*cdsPrincipal.FieldByName(´VALOR´).AsFloat) /100 ;
cdsComisTotal.AsFloat := cdsPrincipal.FieldByName(´VALOR´).AsFloat;
cdsComisID_Cpr_Mb.AsInteger := cdsPrincipal.FieldByName(´CC_IDCPR_MB´).AsInteger;
cdsComisStatus.AsString := cdsPrincipal.FieldByName(´CC_STATUS´).AsString;
end;
end;
[/b:32d82e8554]
[/color:32d82e8554]
GOSTEI 0
Gabriela Miglioli
27/09/2007
[color=darkred:443a012f5f]Bom, o problema foi resolvido de uma maneira bastante simples... lá vai.
while not cdsPrincipal.Eof do
begin
for i := 1 to 10 do
begin
if (cdsPrincipal.FieldByName(´VEND´+IntToStr(i)).AsString >= edNomeVend.Text)and
(cdsPrincipal.FieldByName(´VEND´+IntToStr(i)).AsString <= edAteNomeVend.Text) then
begin
cdsComis.Append;
cdsComisStatus.AsString := cdsPrincipal.FieldByName(´CC_STATUS´).AsString;
cdsComisFile.AsInteger := cdsPrincipal.FieldByName(´CC_COD´).AsInteger;
cdsComisVendedor.AsString := cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString;
cdsComisPorcComis.AsFloat := cdsPrincipal.FieldByName(´CC_COMIS´+InTtoStr(i)).AsFloat ;
cdsComisComissao.AsFloat := (cdsComisPorcComis.AsFloat*cdsPrincipal.FieldByName(´VALOR´).AsFloat) /100 ;
cdsComisTotal.AsFloat := cdsPrincipal.FieldByName(´VALOR´).AsFloat;
end;
end;
Obrigada pela atenção...
BjS!
[/color:443a012f5f]
while not cdsPrincipal.Eof do
begin
for i := 1 to 10 do
begin
if (cdsPrincipal.FieldByName(´VEND´+IntToStr(i)).AsString >= edNomeVend.Text)and
(cdsPrincipal.FieldByName(´VEND´+IntToStr(i)).AsString <= edAteNomeVend.Text) then
begin
cdsComis.Append;
cdsComisStatus.AsString := cdsPrincipal.FieldByName(´CC_STATUS´).AsString;
cdsComisFile.AsInteger := cdsPrincipal.FieldByName(´CC_COD´).AsInteger;
cdsComisVendedor.AsString := cdsPrincipal.FieldByName(´VEND´+InTtoStr(i)).AsString;
cdsComisPorcComis.AsFloat := cdsPrincipal.FieldByName(´CC_COMIS´+InTtoStr(i)).AsFloat ;
cdsComisComissao.AsFloat := (cdsComisPorcComis.AsFloat*cdsPrincipal.FieldByName(´VALOR´).AsFloat) /100 ;
cdsComisTotal.AsFloat := cdsPrincipal.FieldByName(´VALOR´).AsFloat;
end;
end;
Obrigada pela atenção...
BjS!
[/color:443a012f5f]
GOSTEI 0