× Linguagem de Programação ADVPL

Perguntas Ordenação de Relatorio

Mais
10 anos 1 mês atrás #25674 por alemaocar
Boa Tarde Pessoal, gostaria de tirar uma duvida com vocês.
É o seguinte, tenho um relatorio onde gostaria de ordenar o mesmo não pelo item mais sim pelo endereço de onde esta o produto no estoque tipo exemplo abaixo:

Item Codigo Endereço
01 1010 R873
02 2020 A132
03 3030 B343
04 4040 S123
05 5050 H232

Em vez de Ordenar pelo item, gostaria de ordenar pelo endereço, pois fica mais pratico para o pessoal do estoque pegar os itens pois o mesmo começa do menos para o maior, gostaria que ficasse assim:

Item Codigo Endereço
02 2020 A132
03 3030 B343
05 5050 H232
01 1010 R873
04 4040 S123

Gostaria que ficasse assim...abaixo o codigo que estou utilizando a rotina..

/* MODELO DE IMPRESSAO
// 1 2 3 4 5 6 7 8
li := 01
While !Eof( ) .and. SL2->L2_NUM == SL1->L1_NUM
If SL2->L2_VENDIDO == "S"
dbSkip()
Loop
EndIf

If li > 60
lCabec := .T.
EndIf

If lCabec
li := 01
@ li,00 PSAY "+
+"

If LjAnalisaLeg(17)[1]
li++
@ li,00 PSAY "| NÃO É DOCUMENTO FISCAL - NÃO VÁLIDO COMO GARANTIA |"
li++
@ li,00 PSAY "| |"
EndIf

li++
@ li,00 PSAY "|No. Orçamento: Emissão: Validade: |"
@ li,17 PSAY SL1->L1_NUM
@ li,38 PSAY SL1->L1_EMISSAO
@ li,64 PSAY SL1->L1_DTLIM

li++
@ li,00 PSAY "|Cliente: - |"
@ li,17 PSAY SL1->L1_CLIENTE
@ li,28 PSAY SA1->A1_NOME

li++
@ li,00 PSAY "|Vendedor - |"
@ li,17 PSAY SL1->L1_VEND
@ li,28 PSAY SA3->A3_NOME

li++
@ li,00 PSAY "|
|"

li++
@ li,00 PSAY "|It Código Qtde. Um Vlr.Unitário Vlr.Desconto Vlr.Total|"

lCabec := .F.
EndIf

li++
@ li,00 PSAY "| |"
@ li,01 PSAY SL2->L2_ITEM
@ li,04 PSAY SL2->L2_PRODUTO
@ li,36 PSAY SL2->L2_QUANT Picture "@E 999.9"
@ li,43 PSAY SL2->L2_UM
@ li,47 PSAY SL2->L2_VRUNIT + SL2->L2_DESCPRO + (SL2->L2_VALDESC / SL2->L2_QUANT) Picture "@E 9,999,999.99"
@ li,62 PSAY SL2->L2_VALDESC + SL2->L2_DESCPRO Picture "@E 9,999,999.99"
@ li,77 PSAY SL2->L2_VLRITEM Picture "@E 9,999,999.99"

li++
@ li,00 PSAY "| Des: |"
@ li,09 PSAY GetAdvFVal("SB1", "B1_ESPECIF", xFilial("SB1") + SL2->L2_PRODUTO, 1, "", .T.)
// @ li,09 PSAY SL2->L2_ESPECIF

li++
@ li,00 PSAY "| Partn: Endereço: |"
@ li,11 PSAY GetAdvFVal("SB1", "B1_PARTN", xFilial("SB1") + SL2->L2_PRODUTO, 1, "", .T.)
@ li,74 PSAY SL2->L2_LOCALIZ

nValDesc += SL2->L2_VALDESC
li++
dbSkip()
EndDo

If !lCabec
li++
@ li,00 PSAY "|
|"

li++
@ li,00 PSAY "|T O T A L .............................................................R$ |"
@ li,75 PSAY SL1->L1_VLRTOT + SL1->L1_DESCONT + nValDesc picture "@E 999,999,999.99"

li++
@ li,00 PSAY "|D E S C O N T O .......................................................R$ |"
@ li,75 PSAY SL1->L1_DESCONT + nValDesc picture "@E 999,999,999.99"

li++
@ li,00 PSAY "|V A L O R A P A G A R ...............................................R$ |"
@ li,75 PSAY SL1->L1_VLRLIQ picture "@E 999,999,999.99"

li++
@ li,00 PSAY "|
|"

li++
@ li,00 PSAY "|Condição Pagamento : |"
If Len(aCondicoes) == NIL
@ li,22 PSAY SubStr(aCondicoes[ SL1->L1_COND ], 1, 12)
EndIf

li++
@ li,00 PSAY "|Forma de Pagamento : |"
If Len(aFormaPgto) == NIL
@ li,22 PSAY SubStr( aFormaPgto[ SL1->L1_FORMA ] , 1, 13 )
EndIf
If !Empty( SL1->L1_CONDPG )
dbSelectArea( "SE4" )
dbSeek( xFilial("SE4")+SL1->L1_CONDPG)
@li, 37 PSAY "Condição de Pgto." + SL1->L1_CONDPG + " " + SE4->E4_DESCRI
dbSelectArea( "SL1" )
EndIf

li++
@ li,00 PSAY "|Seu Pedido No. : |"
@ li,22 PSAY SL1->L1_NROPCLI

li++
@ li,00 PSAY "+
+"

EndIf

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás #25677 por mbrigagao
Respondido por mbrigagao no tópico Ordenação de Relatorio
Michel,

Não consegui localizar no seu código o momento em que vc busca os itens na tabela, mas vc tem duas alternativas:
1) Criar um novo índice, via configurar, para a tabela e chave que vc precisa, assim ficaria disponível para ser usada a qualquer momento (exemplo : FILIAL+ENDEREÇO+ITEM+CODIGO);

2) Criar um índice temporário dentro da rotina de impressão utilizando ou 'order by' ou indregua... e utilizar esse novo índice para as buscas e ordenação do seu relatório.

Abrs

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás #25678 por alemaocar
Respondido por alemaocar no tópico Ordenação de Relatorio
Buenas Marcelo,
Cara valeu pelo retorno, consegui fazer o que precisava.
Acabei criando um novo indice na tabela, e dentro do relatorio onde realizava o dbsetorder(1), alterei o mesmo para utilizar o DbOrderNickName(NickName) e acabo resolvendo o meu problema que tinha...
Teoricamente é bem o que vc informo no item 1...

Valeu pela atenção

Abrs

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás #25681 por mbrigagao
Respondido por mbrigagao no tópico Ordenação de Relatorio
Michel,

Boa sorte.... pode contar conosco.

At.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.088 segundos
Joomla templates by a4joomla