Erro na função DESCEND pelo DBUSEAREA()
Moderador: Moderadores
Erro na função DESCEND pelo DBUSEAREA()
Mário esse assunto com DESCEND vem desde 2012 você é o autor do tópico:
https://pctoledo.org/forum/viewto ... 45&t=13702
https://pctoledo.org/forum/viewto ... 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)
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)
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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:
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:
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.
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:
Código: Selecionar todos
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()
Código: Selecionar todos
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
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.
Erro na função DESCEND pelo DBUSEAREA()
Mário,
Tenta isso:
Tenta isso:
Código: Selecionar todos
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)
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)
Erro na função DESCEND pelo DBUSEAREA()
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
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro na função DESCEND pelo DBUSEAREA()
O último post do ASimões é o correto.
Se quiser ver mais detalhes...
https://pctoledo.org/forum/viewto ... nd#p107630
Mas num resumo, por ser compatível com Clipper, Descend() não se dá bem no Harbour por causa o uso de codepage.
Se quiser ver mais detalhes...
https://pctoledo.org/forum/viewto ... nd#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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Erro na função DESCEND pelo DBUSEAREA()
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. )
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)
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)
Erro na função DESCEND pelo DBUSEAREA()
Mário,
É disso que eu to falando:
É disso que eu to falando:
Código: Selecionar todos
// 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)
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)
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Erro na função DESCEND pelo DBUSEAREA()
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.
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.
