- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Compilação
- Ordenar tabela temporária
Perguntas Ordenar tabela temporária
- s1qu31r4@gmail.com
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
9 anos 4 meses atrás #28522
por s1qu31r4@gmail.com
Ordenar tabela temporária foi criado 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
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.
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
- s1qu31r4@gmail.com
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
9 anos 4 meses atrás #28529
por s1qu31r4@gmail.com
Respondido por s1qu31r4@gmail.com no tópico Ordenar tabela temporária
Olá Marcelo!
Obrigado por responder, mas infelizmente não ordenou...
vou mandar o fonte em anexo para você vê por favor...
Obrigado por responder, mas infelizmente não ordenou...
vou mandar o fonte em anexo para você vê por favor...
Por favor Acessar ou Registrar para participar da conversa.
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
9 anos 4 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:
E pode excluir o trecho:
Espero ter ajudado
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.
- s1qu31r4@gmail.com
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
9 anos 4 meses atrás #28540
por s1qu31r4@gmail.com
Respondido por s1qu31r4@gmail.com no tópico Ordenar tabela temporária
Obrigado Marcelo! deu certo!
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Compilação
- Ordenar tabela temporária
Tempo para a criação da página:0.131 segundos