Página 2 de 2
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 27 Nov 2016 14:00
por asimoes
Mário esse assunto com DESCEND vem desde 2012 você é o autor do tópico:
https://pctoledo.org/forum/viewto ... 45&t=13702
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 28 Nov 2016 12:12
por Mario Mesquita
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.
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 06:48
por Mario Mesquita
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:
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()
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:
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
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.
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 21:01
por asimoes
Mário,
Tenta isso:
Código: Selecionar todos
TITULOS->( OrdSetFocus("DESCOD") )
TITULOS->( DbGoTop() )
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 21:05
por asimoes
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
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 21:14
por JoséQuintas
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.
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 21:31
por asimoes
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. )
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 20 Abr 2017 21:41
por asimoes
Mário,
É 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
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 21 Abr 2017 08:59
por Mario Mesquita
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.
Erro na função DESCEND pelo DBUSEAREA()
Enviado: 21 Abr 2017 10:25
por Mario Mesquita
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.