Perguntas Ordenar tabela temporária

Mais
9 anos 5 meses atrás #28522 por s1qu31r4@gmail.com
Olá a todos!

sou iniciante em advpl, preciso de uma ajuda aqui, estou tentando ordenar essa tabela temporária ("TMP"), mas não estou conseguindo preciso de ordenar ela por data de nascimento, me ajudem por favor!



Fonte segue abaixo:

#include "totvs.ch"
#include "protheus.ch"
#INCLUDE "TopConn.ch"//biblioteca para usar o select "Query"


User Function fTabTemp()
Private cTipoCard := ""
Private cMensagem := "
"//----mensagem a ser exibida no final


//Query que traz todos os clientes cadastrados na base de dados que não estejam deletados
cQry := ""
//cQry := " SELECT * FROM "+RetSqlName("SA1")+" SA1 WHERE SA1.D_E_L_E_T_ = '' "
cQry := " SELECT "
cQry += " * "
cQry += " FROM "+RetSqlName("SA1")+" SA1 "
cQry += " WHERE SA1.D_E_L_E_T_ = '' "


//cQry:= ChangeQuery(cQry)//
...
TCQUERY cQry NEW ALIAS "TMP"//
Cria uma tabela temporaria "TMP" com o resultado da Query

//
cIndice := "A1_DTNASC"

TMP->(indregua( "TMP" , CriaTrab(Nil,.F.) , cIndice ,,,"Selecionando registros TMP..."))


DbSelectArea("TMP")//
Seleciona a tabela criana na Query
TMP->(DbGoTop())//
Posiciona no primeiro registro
While TMP->(!EOF())//
Enquanto não acabar os dados ele fica em loop

cNomeCliente := TMP->A1_NOME//
Pega o nome do cliente que vem da Query
cNomeCliente := AllTrim(cNomeCliente)//
Tira todos espaços em branco das laterias esq/dir
cMensagem += +Chr(13)+Chr(10)+cNomeCliente//
Quebra a linha primeiro e Adiciona a variavel cMensagem o nome de mais um cliente que veio na query
cMensagem += Replicate("-",50-Len(cNomeCliente))+">"//-Adiciona 50 espaços em branco diminuinto a quantidade de caracter do nome do cliente e coloca uma barrinha separando o nome da data de nascimento
cMensagem += DTOC(STOD(TMP->A1_DTNASC))//
Pega a data de nascimento do cliente que vem da Query


TMP->(dbSkip())//
Pula para o proximo registro
Enddo//
Fim do Enquanto

TMP->(dbCloseArea())//
Fecha a tabela
cMensagem +=Chr(13)+Chr(10)+"
fim
"
//
Mensagem com o nome e a data de nascimento dos clientes
ApMsgInfo("Lista dos Clientes cadastrados no Protheus 12 - Tabela SA1!"+Chr(13)+Chr(10)+cMensagem,"[fTabTemp] - SUCESSO")


Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 5 meses atrás #28527 por mbrigagao
Respondido por mbrigagao no tópico Ordenar tabela temporária
Lucas,

Faça assim:
cIndice := "Dtos(A1_DTNASC)"
Indregua( "TMP" , CriaTrab(Nil,.F.) , cIndice ,,,"Selecionando registros TMP...")

At.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 5 meses atrás #28529 por s1qu31r4@gmail.com
Olá Marcelo!
Obrigado por responder, mas infelizmente não ordenou... :(
vou mandar o fonte em anexo para você vê por favor...
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 5 meses atrás #28536 por mbrigagao
Respondido por mbrigagao no tópico Ordenar tabela temporária
Lucas,

O problema é o seguinte, você está gerando o arquivo temporário através de uma query dentro do banco, então para ordenar a tabela temporária você deve inserir a cláusula order by na sua query.


Vai ficar assim:
cQry := " SELECT "
cQry += " * " 
cQry += " FROM "+RetSqlName("SA1")+" SA1 "
cQry += " WHERE SA1.D_E_L_E_T_ = '' "
cQry += " ORDER BY A1_NOME"

E pode excluir o trecho:
cIndice := "A1_NOME"   
TMP->(indregua("TMP",Nil,cIndice,,,"Selecionando registros TMP..."))

Espero ter ajudado

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 5 meses atrás #28540 por s1qu31r4@gmail.com
Obrigado Marcelo! deu certo!

Por favor Acessar ou Registrar para participar da conversa.

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