Clipper On Line • Ver Tópico - Erro na função DESCEND pelo DBUSEAREA()

Erro na função DESCEND pelo DBUSEAREA()

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 27 Nov 2016 13:00

Mário esse assunto com DESCEND vem desde 2012 você é o autor do tópico:

http://www.pctoledo.com.br/forum/viewtopic.php?f=45&t=13702
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 28 Nov 2016 11:12

Bom dia a todos!

Caramba, do fundo falso do baú. Confesso que nem lembrava do post e quando joguei DESCEND na busca veio um monte de coisas e não reparei esse.

Tem como eu verificar os meus posts? Assim, evito assuntos redundantes.

Foi sem querer, desculpem minha distração.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 20 Abr 2017 06:48

Bom dia, pessoal.

Levantei o tópico pois de novo me deparo com problemas com o DESCEND. Depois da última dúvida/problema de porque o DESCEND não carregava e com a ajuda de vcs resolvi aqui, eis que, prosseguindo com a passagem do 3.0.46 para a 3.4.3 notei algo estranho.

Notei que ao abrir um browse com uma tabela que exibe registros com um índice com DESCEND, ele não ia ao topo do arquivo. Fica parado em um ponto da tabela. E pelo que notei, parece que ele não está indexando a tabela toda. Isso funciona perfeitamente compilado com o HMG 3.0.46, mas na 3.4.3 está ocorrendo isso. Pra ilustrar abaixo a indexação do arquivo:

DBUSEAREA( .T.,"DBFCDX","TITULOS" )
INDEX ON PROTOCOLO+SERIE                                        TAG TITCOD  TO TITULOS    // 1
INDEX ON SACADO+SITUACAO                                        TAG TITSAC  TO TITULOS     // 2
INDEX ON CGC+SITUACAO                                              TAG TITPESS TO TITULOS     // 3
INDEX ON NUMDOC                                                        TAG TITDOC  TO TITULOS    // 4
INDEX ON DTOS(DTENTRADA)+PROTOCOLO                     TAG DTPROT  TO TITULOS   // 5
INDEX ON DTOS(DTPAGTO)                                            TAG TITCANC TO TITULOS   // 6
INDEX ON CODBANCO+DTOS(DTPROTESTO)                     TAG TITBCO   TO TITULOS   // 7
INDEX ON CODBANCO+PROTOCOLO+DTOS(DTPROTESTO) TAG TITBCOP TO TITULOS  // 8
INDEX ON DTOS(DTPROTESTO)                                       TAG TITDATA TO TITULOS  // 9
INDEX ON CPF+SITUACAO                                               TAG TITCPF   TO TITULOS  // 10
INDEX ON LIVAPT+FOLAPT+PROTOCOLO                         TAG TITLIV    TO TITULOS   // 11
INDEX ON DTOS(DTCHEQUE)+NUMCHEQUE                      TAG TITGUIA TO TITULOS // 12
INDEX ON NUMDISTRIB                                                   TAG TITDIST  TO TITULOS  // 13
INDEX ON DESCEND(PROTOCOLO+SERIE)                         TAG DESCOD  TO TITULOS // 14  <-- esse índice
INDEX ON ARQREMESSA                                                 TAG TITREM   TO TITULOS  // 15
INDEX ON SITUACAO                                                     TAG TITSIT    TO TITULOS    // 16
DBCLOSEAREA()


Então, em uma tela de consulta, quando dou um DBGOTOP() com esse índice, ele não vai ao início, que na verdade é o fim, porém invertido:

DBUSEAREA( .T.,"DBFCDX","TITULOS",, .T. )   
SET INDEX TO TITULOS
DBSETORDER(14)
DBGOTOP()

DO EVENTS

Load Window Frm_11100
Frm_11100.center
Frm_11100.Btn_Inclui.Enabled  := .T.
Frm_11100.Btn_Altera.Enabled := .T.
Frm_11100.Btn_Exclui.Enabled := .T.
Frm_11100.Text_1.SetFocus
Frm_11100.activate


Estou indexando com CDX e compilando com a HMG ANSI 32 bits. Preocupa que uma coisa boba não funcione corretamente. Nunca tive problema com DESCEND desde o Clipper.

Como sempre, agradeço qualquer luz que alguém puder me dar. Vi que alguns colegas usam o DESCEND normalmente, então deve ser algo que não estou fazendo ou fazendo errado ou de forma incorreta para a versão da HMG.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 20 Abr 2017 21:01

Mário,

Tenta isso:
TITULOS->( OrdSetFocus("DESCOD") )
TITULOS->( DbGoTop() )
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 20 Abr 2017 21:05

Mário,

Pode tentar isso também:

INDEX ON DESCEND(PROTOCOLO+SERIE) TAG DESCOD TO TITULOS // 14 <-- esse índice

Por

INDEX ON PROTOCOLO+SERIE TAG DESCOD DESCEND TO TITULOS // 14 <-- esse índice
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor JoséQuintas » 20 Abr 2017 21:14

O último post do ASimões é o correto.

Se quiser ver mais detalhes...
http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=17321&p=107630&hilit=descend#p107630

Mas num resumo, por ser compatível com Clipper, Descend() não se dá bem no Harbour por causa o uso de codepage.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 20 Abr 2017 21:31

Mário,

Pode fazer isso também:

INDEX ON PROTOCOLO+SERIE TAG DESCOD TO TITULOS // 14 <-- esse índice

Seta a ordem ascendente

DbSetOrder(14)
*
SET DESCENDING ON //tradução ordDescend( ,, .T. )
....
Desfaz a ordem acendente, depois de usar o indice
SET DESCENDING OFF //tradução ordDescend( ,, .F. )
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor asimoes » 20 Abr 2017 21:41

Mário,

É disso que eu to falando:
// The example creates an ascending index and demonstrates
// the effect when the navigational order is reversed.

   PROCEDURE Main
      USE Customer
      INDEX ON Upper(Lastname+Firstname) TO Cust01

      GO TOP
      ? LastName               // result: Alberts
      GO BOTTOM
      ? LastName               // result: Waters

      OrdDescend( ,, .T. )     // change navigational order

      SKIP -1                  // skipping backwards from the last
                               // record hits begin of file.
      ? Bof()                  // result: .T.

      GO BOTTOM
      ? Eof()                  // result: .F.
      ? LastName               // result: Alberts

      SKIP
      ? Eof()                  // Result: .T.

      GO TOP
      ? LastName               // result: Waters

      USE
   RETURN
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 21 Abr 2017 08:59

Bom dia, amigos.

Uau, mil opções! Vou tentar todas e aviso vocês do resultado. Mas já sei que vai dar certo, com tantas possibilidades é impossível não dar.

Desde já, agradeço o apoio de vocês.

Volto com notícias.

Abraços,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Erro na função DESCEND pelo DBUSEAREA()

Mensagempor Mario Mesquita » 21 Abr 2017 10:25

Bom dia, voltei!

Vocês são uns monstros. Ainda tenho que comer muita grama pra chegar nesse nível, rs

Deu certo o "INDEX ON PROTOCOLO+SERIE TAG DESCOD DESCEND TO TITULOS". A ordem dos fatores altera o produto nesse caso.

Obrigado, amigos. Salvaram minha caveira outra vez.

Abraços e bom feirado a todos,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Anterior



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro