DBEdit lento p/focar 1º registro (não é probl. de pesquisa)
Moderador: Moderadores
-
paulobergo
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 09 Nov 2007 08:54
- Localização: Juiz de Fora-MG
DBEdit lento p/focar 1º registro (não é probl. de pesquisa)
Bom dia amigos!
Estou experimentando uma lentidão muito grande quando abro um DBEdit em uma tabela com muitos registros.
A versão que uso é: "xHarbour Compiler build 0.99.70 (SimpLex)"
O que acontece, exatamente, é que o DBEdit preenche normalmente a janela com os registros disponíveis até o limite da janela, sem problemas, mas demora muito a "focar" o registro do topo...
Uma tabela simples, de clientes, indexada pelo nome, sem qualquer tipo de filtro, leva esse tempo, para ter o foco no registro do topo:
pentiumIV 1.6, xp, 256mb, acessando localmente: menos de um segundo
duron 1.8, w98, 128mb, acessando pela rede: menos de um segundo
duron 1.1, w98, 128mb, acessando pela rede: quatro segundos
pentiumIII 533, xp, 256mb, acessando pela rede: 6 segundos
k6 II 500, w98, 128mb, acessando pela rede: 12 segundos
pentiumIV, 1.8, xp, 512mb, acessando pela rede: quatro segundos
O que parece é que, para "formar" a janela, o DBEdit faz algo como um GoBottom para depois se posicionar no registro do topo da janela...
Então... há alguma solução para isso (atualizar a versão do XHarbour poderia resolver)?
Grato por qualquer ajuda!
Estou experimentando uma lentidão muito grande quando abro um DBEdit em uma tabela com muitos registros.
A versão que uso é: "xHarbour Compiler build 0.99.70 (SimpLex)"
O que acontece, exatamente, é que o DBEdit preenche normalmente a janela com os registros disponíveis até o limite da janela, sem problemas, mas demora muito a "focar" o registro do topo...
Uma tabela simples, de clientes, indexada pelo nome, sem qualquer tipo de filtro, leva esse tempo, para ter o foco no registro do topo:
pentiumIV 1.6, xp, 256mb, acessando localmente: menos de um segundo
duron 1.8, w98, 128mb, acessando pela rede: menos de um segundo
duron 1.1, w98, 128mb, acessando pela rede: quatro segundos
pentiumIII 533, xp, 256mb, acessando pela rede: 6 segundos
k6 II 500, w98, 128mb, acessando pela rede: 12 segundos
pentiumIV, 1.8, xp, 512mb, acessando pela rede: quatro segundos
O que parece é que, para "formar" a janela, o DBEdit faz algo como um GoBottom para depois se posicionar no registro do topo da janela...
Então... há alguma solução para isso (atualizar a versão do XHarbour poderia resolver)?
Grato por qualquer ajuda!
Editado pela última vez por paulobergo em 02 Abr 2008 08:56, em um total de 1 vez.
Não se vê bem com insolação... é essencial cobrir os olhos...
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
COLEGA...
Esqueça tudo o que voce tem e comece a utilizar as rotinas descritas no link abaixo:
https://pctoledo.org/forum/viewto ... ght=dbedit
Saudações,
ERASMO
Esqueça tudo o que voce tem e comece a utilizar as rotinas descritas no link abaixo:
https://pctoledo.org/forum/viewto ... ght=dbedit
Saudações,
ERASMO
-
paulobergo
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 09 Nov 2007 08:54
- Localização: Juiz de Fora-MG
Grato pela atenção mas não é um problema de pesquisa...
Erasmo, grato pela dica... mas já implementei este código antes para, apenas, usar a opção de pesquisa durante o DBEdit...
O problema é de focar o primeiro registro rapidamente... só isso...
Considere que, para minimizar a perta de tempo, estou tendo que fazer isso:
Abro a tabela/encontro um nome qualquer/gravo o registro/vou para o final da tabela/volto para o primerio registro/executo o DBEdit:
sNome := 'PAULO'
Use clientes Index clinome
Set SoftSeek On
Seek &sNome
iMarca := RecNo()
Go Bottom
Go iMarca
DbEdit(5, 0, ... ... ...)
Isso é que, dependendo da máquina, provoca um atraso em focar o primeiro registro...
Hoje, a título de teste, vou eliminar todos os protocolos ipx/netbeui dos computadores que ainda os possuem, para ver se o atraso é causado pela rede... se melhorar, posto aqui...
Abraços...
Grato pela atenção!
O problema é de focar o primeiro registro rapidamente... só isso...
Considere que, para minimizar a perta de tempo, estou tendo que fazer isso:
Abro a tabela/encontro um nome qualquer/gravo o registro/vou para o final da tabela/volto para o primerio registro/executo o DBEdit:
sNome := 'PAULO'
Use clientes Index clinome
Set SoftSeek On
Seek &sNome
iMarca := RecNo()
Go Bottom
Go iMarca
DbEdit(5, 0, ... ... ...)
Isso é que, dependendo da máquina, provoca um atraso em focar o primeiro registro...
Hoje, a título de teste, vou eliminar todos os protocolos ipx/netbeui dos computadores que ainda os possuem, para ver se o atraso é causado pela rede... se melhorar, posto aqui...
Abraços...
Grato pela atenção!
Não se vê bem com insolação... é essencial cobrir os olhos...
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
por que vc usa essa macro?
Seek &sNome
basta
Seek sNome
e tambem falta oset softseek off
Set SoftSeek On
Seek sNome
Set SoftSeek Off
Seek &sNome
basta
Seek sNome
e tambem falta oset softseek off
Set SoftSeek On
Seek sNome
Set SoftSeek Off
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
-
paulobergo
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 09 Nov 2007 08:54
- Localização: Juiz de Fora-MG
Oi Luciano...
Isso foi só um exemplo... pensei "find &sNome" e escrevi seek... mas realmente é seek sNome...
O Set SoftSeek Off também é colocado após o "seek"... mas sua existência ou não também não afeta a "lerdeza" em focar o primeiro registro...
De qualquer forma, grato pela colaboração...
Isso foi só um exemplo... pensei "find &sNome" e escrevi seek... mas realmente é seek sNome...
O Set SoftSeek Off também é colocado após o "seek"... mas sua existência ou não também não afeta a "lerdeza" em focar o primeiro registro...
De qualquer forma, grato pela colaboração...
Não se vê bem com insolação... é essencial cobrir os olhos...
Código: Selecionar todos
sNome := 'PAULO'
Use clientes Index clinome // Vc abre o arquivo toda vez?
dbseek(alltrim(Nome), .T.)
dbedit(5, 0, ... ... ...)
Código: Selecionar todos
sNome := 'PAULO'
Use clientes Index clinome // Vc abre o arquivo toda vez?
dbseek(alltrim(Nome), .T.)
while !eof()
? nome
dbskip()
end
A demora de posicionamento normalmente e um filtro aberto.
Vc pode abrir o DBF sem o indice e abrir diretamente o dbedit, sem pesquisar o nome. Veja quanto tempo demora da abertura do dbf até o dbedit estabilizar.
Boa sorte. Espero ter ajudado.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
PauloBergo,
A vs. 99.70 do xharbour veio com alguns problemas no DBEDIT.
O que vc pode fazer é pegar o DBEDIT.PRG da vs 99.60 e compilá-lo junto com sua aplicação, ae seus problemas acabaram-se! rsrsrsrsrs
Jânio
A vs. 99.70 do xharbour veio com alguns problemas no DBEDIT.
O que vc pode fazer é pegar o DBEDIT.PRG da vs 99.60 e compilá-lo junto com sua aplicação, ae seus problemas acabaram-se! rsrsrsrsrs
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
o que seriam "muito registros" para vc...
eu tenho sistema rodando com a 0.99.6 e com a 1.0.0 e o dbedit funciona perfeitamente....
eu tenho sistema rodando com a 0.99.6 e com a 1.0.0 e o dbedit funciona perfeitamente....
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
-
paulobergo
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 09 Nov 2007 08:54
- Localização: Juiz de Fora-MG
Olá! Bom dia!
O problema acontece com tabelas com 18mil, 64mil, 350mil...... registros...
Acredito que seja um problema quanto à forma de desenho da tela feito pelo DBEdit.
Veja só: uso duas aplicações que tem, basicamente, o mesmo código...
FatNtx é o programa de faturamento compilado no Clipper 5.3c
FatNtx32 é o mesmo programa, compilado no XHarbour 0.99.7...
O FatNtx, 16bits, usado nas máquinas com Windows95 e Windows311, em uma mesma pesquisa simples, em uma tabela também simples (tipo cadastro de clientes ordenado pelo campo nome, como exemplifiquei antes), ao abrir o DBEdit, foca instantaneamente no primeiro registro encontrado...
O FatNtx32, 32bits, usado nas máquinas com Windows98, 2000 e XP demora para focar o primeiro registro, em função do computador... em um PentiumIV com 256mb e XP, leva dois segundos... em um PentiumIII com 128mb e Win98, leva seis... e assim por diante...
Experimentei usar o DBEdit.prg da 1.00.00 e o problema continua... não encontrei ainda o fonte do dbedit.prg da 0.99.6...
Quanto ao código fonte da DBEdit.prg, dei uma olhada superficial; creio que o DBEdit não esteja respeitando o limite de linhas que cabem dentro da janela definida e continua "lendo" a tabela até o seu final... algo assim: se definirmos uma janela para o DBEdit em que cabem 10 linhas (10 registros), o DBEdit as preenche e não detecta que já estão todas preenchidas e continua lendo registro a registro até o final da tabela...
Isso não é percebido em máquinas rápidas, tabelas acessadas por um único usuário ou acessadas localmente, e com tabelas pequenas...
Nas máquinas que uso para desenvolvimento (Pentium IV 1.6 512mb e Celeron 1.6~ 1gb), quando abro a tabela de clientes, com 64mil registros, o DBEdit foca a primeira linha quase que instantaneamente, mas dá para perceber um "delay")... se abro a tabela de crediário, com un 450mil registros (mesmo sem pesquisa nenhuma, seek, find, locate...), já leva uns 3 segundos... e se faço o mesmo com a aplicação 16 bits, o foco é instantaneo...
De qualquer forma, grato pela colaboração... neste fim de semana vou dar uma vasculhada no código da DBEdit e retorno...
Grato! Abraços!
O problema acontece com tabelas com 18mil, 64mil, 350mil...... registros...
Acredito que seja um problema quanto à forma de desenho da tela feito pelo DBEdit.
Veja só: uso duas aplicações que tem, basicamente, o mesmo código...
FatNtx é o programa de faturamento compilado no Clipper 5.3c
FatNtx32 é o mesmo programa, compilado no XHarbour 0.99.7...
O FatNtx, 16bits, usado nas máquinas com Windows95 e Windows311, em uma mesma pesquisa simples, em uma tabela também simples (tipo cadastro de clientes ordenado pelo campo nome, como exemplifiquei antes), ao abrir o DBEdit, foca instantaneamente no primeiro registro encontrado...
O FatNtx32, 32bits, usado nas máquinas com Windows98, 2000 e XP demora para focar o primeiro registro, em função do computador... em um PentiumIV com 256mb e XP, leva dois segundos... em um PentiumIII com 128mb e Win98, leva seis... e assim por diante...
Experimentei usar o DBEdit.prg da 1.00.00 e o problema continua... não encontrei ainda o fonte do dbedit.prg da 0.99.6...
Quanto ao código fonte da DBEdit.prg, dei uma olhada superficial; creio que o DBEdit não esteja respeitando o limite de linhas que cabem dentro da janela definida e continua "lendo" a tabela até o seu final... algo assim: se definirmos uma janela para o DBEdit em que cabem 10 linhas (10 registros), o DBEdit as preenche e não detecta que já estão todas preenchidas e continua lendo registro a registro até o final da tabela...
Isso não é percebido em máquinas rápidas, tabelas acessadas por um único usuário ou acessadas localmente, e com tabelas pequenas...
Nas máquinas que uso para desenvolvimento (Pentium IV 1.6 512mb e Celeron 1.6~ 1gb), quando abro a tabela de clientes, com 64mil registros, o DBEdit foca a primeira linha quase que instantaneamente, mas dá para perceber um "delay")... se abro a tabela de crediário, com un 450mil registros (mesmo sem pesquisa nenhuma, seek, find, locate...), já leva uns 3 segundos... e se faço o mesmo com a aplicação 16 bits, o foco é instantaneo...
De qualquer forma, grato pela colaboração... neste fim de semana vou dar uma vasculhada no código da DBEdit e retorno...
Grato! Abraços!
Não se vê bem com insolação... é essencial cobrir os olhos...
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
compila seu sistema 32 bits usando a GTWVW
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
PauloBergo,
Tente como o Luciano Bonfim sugeriu. Compile sua aplicacao com a lib GTWVT ou GTWVW, pois essa lentidao que vc ta passando é devido ao console do win98 que é péssimo.
Com a GTWVW ou GTWVT sua aplicacao rodará dentro de uma janela, mas continuará sendo texto.
Janio
Tente como o Luciano Bonfim sugeriu. Compile sua aplicacao com a lib GTWVT ou GTWVW, pois essa lentidao que vc ta passando é devido ao console do win98 que é péssimo.
Com a GTWVW ou GTWVT sua aplicacao rodará dentro de uma janela, mas continuará sendo texto.
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Amigo Paulobergo
Tem um erro no seu codigo,:
Assim fica melhor
Deve melhor um pouco a velocidade. use a versão mais nova do xharbour, teve melhorias no browse relativo a velocidade, o que afeta o DBedit tambem, que é feito com uso dele.
Tem um erro no seu codigo,:
Código: Selecionar todos
sNome := 'PAULO'
Use clientes Index clinome
Set SoftSeek On
Seek &sNome
iMarca := RecNo()
Go Bottom
Go iMarca
DbEdit(5, 0, ... ... ...)
Código: Selecionar todos
sNome := 'PAULO'
Use clientes Index clinome
Set SoftSeek On
dbSeek(sNome)
DbEdit(5, 0, ... ... ...)
-
paulobergo
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 09 Nov 2007 08:54
- Localização: Juiz de Fora-MG
Olá pessoal...
Grato pelas dicas!
No próximo fim de semana tentarei fazer algumas mudanças com as dicas que vocês passaram...
A lentidão para focar o primeiro registro só ocorre realmente no DBEdit... de resto, em tudo os sistemas funcionam perfeitamente...
Dando certo eu posto aqui (ainda não desisti também de vasculhar o código da dbedit.prg, inclusive da versão 1.00 que baixei por último e que também não melhorou em nada a questão de focar o 1o. registro)...
Grato e um grande abraço!
Grato pelas dicas!
No próximo fim de semana tentarei fazer algumas mudanças com as dicas que vocês passaram...
A lentidão para focar o primeiro registro só ocorre realmente no DBEdit... de resto, em tudo os sistemas funcionam perfeitamente...
Dando certo eu posto aqui (ainda não desisti também de vasculhar o código da dbedit.prg, inclusive da versão 1.00 que baixei por último e que também não melhorou em nada a questão de focar o 1o. registro)...
Grato e um grande abraço!
Não se vê bem com insolação... é essencial cobrir os olhos...
