- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- While em Alias filtrado no Browse
×
Linguagem de Programação ADVPL
Perguntas While em Alias filtrado no Browse
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27160
por joaocarloscorrea
While em Alias filtrado no Browse foi criado por joaocarloscorrea
Boa tarde! houve a necessidade de eu precisar somar alguns valores de uns campos virtuais da browse, estou com dificuldade em como fazer um loop para percorrer apenas os registros filtrados pelo usuario no Browse.
Estou fazendo algo como:
Local aAreaAB6
aAreaAB6 := AB6->(GetArea())
nSoma := 0
while AB6->(!EOF())
_cQuery2 := "Select SUM(AB8_TOTAL) as TOTAL "
_cQuery2 += "from AB8010 "
_cQuery2 += "Where substring(AB8_NUMOS,1,6) = '"+AB6->AB6_NUMOS+"' and D_E_L_E_T_ <> '*' and AB8_FILIAL = '01' "
cAlias2 := CriaTrab(,.F.)
TcQuery _cQuery2 NEW Alias cAlias2
DbSelectArea("cAlias2")
dbGoTop()
nSoma := nSoma + cAlias2->TOTAL
AB6->(dbSkip())
enddo
Porem ao debuggar ele começa no registro ok, porem percorre até o final do AB6, como faço para ele fazer o loop apena nos registros filtrados?
Estou fazendo algo como:
Local aAreaAB6
aAreaAB6 := AB6->(GetArea())
nSoma := 0
while AB6->(!EOF())
_cQuery2 := "Select SUM(AB8_TOTAL) as TOTAL "
_cQuery2 += "from AB8010 "
_cQuery2 += "Where substring(AB8_NUMOS,1,6) = '"+AB6->AB6_NUMOS+"' and D_E_L_E_T_ <> '*' and AB8_FILIAL = '01' "
cAlias2 := CriaTrab(,.F.)
TcQuery _cQuery2 NEW Alias cAlias2
DbSelectArea("cAlias2")
dbGoTop()
nSoma := nSoma + cAlias2->TOTAL
AB6->(dbSkip())
enddo
Porem ao debuggar ele começa no registro ok, porem percorre até o final do AB6, como faço para ele fazer o loop apena nos registros filtrados?
Por favor Acessar ou Registrar para participar da conversa.
- afppellegrini
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 16
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27161
por afppellegrini
Respondido por afppellegrini no tópico While em Alias filtrado no Browse
Boa tarde João Carlos,
Faltou um while para percorrer o resultado da sua query, segue exemplo abaixo:
Espero ter ajudado!
Obrigado.
Faltou um while para percorrer o resultado da sua query, segue exemplo abaixo:
Local aAreaAB6
aAreaAB6 := AB6->(GetArea())
nSoma := 0
while AB6->(!EOF())
_cQuery2 := "Select SUM(AB8_TOTAL) as TOTAL "
_cQuery2 += "from AB8010 "
_cQuery2 += "Where substring(AB8_NUMOS,1,6) = '"+AB6->AB6_NUMOS+"' and D_E_L_E_T_ <> '*' and AB8_FILIAL = '01' "
TcQuery _cQuery2 NEW Alias "cAlias2"
DbSelectArea("cAlias2")
dbGoTop()
If !Eof("cAlias2")
ConOut("|Iniciando Soma... |")
While !Eof("cAlias2")
nSoma := nSoma + cAlias2->TOTAL
dbSkip()
EndDo
Else
nSoma := 0
MsgStop("Nenhum registro encontrado em cAlias2!","ATENÇÃO")
EndIf
dbCloseArea("TF100")
AB6->(dbSkip())
enddo
Espero ter ajudado!
Obrigado.
Por favor Acessar ou Registrar para participar da conversa.
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27162
por joaocarloscorrea
Respondido por joaocarloscorrea no tópico While em Alias filtrado no Browse
Opa! agradeço pela resposta rapida! porem essa query que eu criei ela serve apenas para somar o valor da OS, então o retorno dela é apenas um campo: cAlias2->TOTAL que contem o valor total da OS, o que eu preciso é fazer essa query rodar em CADA OS filtrada no browse, por exemplo:
O usuario filtrou as OS abertas dele mesmo e resultou em:
Filial | OS | CLIENTE | TOTAL |
01 0001346 CLIENTE 1 190,00
01 0001347 CLIENTE 2 200,00
01 0001348 CLIENTE 3 300,00
Ao usar esse filtro feito pelo usuario, criei uma função para executar a soma das OS (pois por padrão o sistema n armazena o valor da OS em nenhuma variavel, por isso eu uso a query pra somar) assim que o usuario selecionar a opção era pro meu programa percorrer cada OS, obter seu valor, e retornar na tela a soma das OS, como nesse exemplo R$: 690,00.
O usuario filtrou as OS abertas dele mesmo e resultou em:
Filial | OS | CLIENTE | TOTAL |
01 0001346 CLIENTE 1 190,00
01 0001347 CLIENTE 2 200,00
01 0001348 CLIENTE 3 300,00
Ao usar esse filtro feito pelo usuario, criei uma função para executar a soma das OS (pois por padrão o sistema n armazena o valor da OS em nenhuma variavel, por isso eu uso a query pra somar) assim que o usuario selecionar a opção era pro meu programa percorrer cada OS, obter seu valor, e retornar na tela a soma das OS, como nesse exemplo R$: 690,00.
Por favor Acessar ou Registrar para participar da conversa.
- afppellegrini
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 16
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27163
por afppellegrini
Respondido por afppellegrini no tópico While em Alias filtrado no Browse
Ok, Entendi.
Qual o ponto de entrada que está utilizando?
Qual o ponto de entrada que está utilizando?
Por favor Acessar ou Registrar para participar da conversa.
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27164
por joaocarloscorrea
Respondido por joaocarloscorrea no tópico While em Alias filtrado no Browse
Não estou usando nenhum ponto de entrada, apenas usando mBrowse() no alias AB6 onde vou criar algumas legendas customizada, trazer algumas funções.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- While em Alias filtrado no Browse
Tempo para a criação da página:0.105 segundos