Dbedit muito lento no xHarbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Dbedit muito lento no xHarbour

Mensagem por rubens »

Olá... Bom dia...

Eu fiz algumas pesquisas e a mais parecida com o meu problema está neste tópico:
viewtopic.php?f=4&t=15484&p=91596&hilit=dbedit+lento#p91596

Só que neste tópico e em outras não houve uma resposta conclusiva e é um tópico muito antigo..
Por isso tô postando aqui o meu problema... De repente de lá para cá alguém achou uma solução para o problema.

Na pesquisa com o dbedit quando se pressiona enter para selecionar um item ele demora até uns 10 segundos em rede para remontar a tela e posicionar o cursor na linha do item pesquisado. A mesma rotina no clipper é instantâneo.
Realmente é um erro do xharbour? tem alguma configuração para resolver isso?

Aqui como chama o dbedit

Código: Selecionar todos

DBEDIT(04,05,19,75,aCampo,'TECLAORC',,aTitulo,'Í','³')
Aqui a função 'Teclaorc'

Código: Selecionar todos

*******************************************************************************
FUNCTION TECLAPESQ(nMod)
LOCAL GETLIST := {}, nRecno

IF nMod=4

	IF LASTKEY() == 13	 // ENTER

		IF ALIAS()="ORC"
			VENDACUP(IF(ORC->TIPO='P',1,3))
			RETURN(2)
		ELSE
			cVar := aCampo[1]
			cVar := &cVar.
			SETCURSOR(0)
		ENDIF
		RETURN(0)
		
	ELSEIF LASTKEY() == 305   // ALT + N
	
	   IF ALIAS()="ORC"
			VENDACUP(2)
			RETURN(2)
		ELSE
			cVar := aCampo[1]
			cVar := &cVar.
			SETCURSOR(0)
		ENDIF
		RETURN(0)
		
	ELSEIF LASTKEY() == 286 .AND. ALIAS()="PRO"

		APLICAPRO()

	ELSEIF LASTKEY() == K_INS

		// SE ALIAS PRO - CADASTRA NOVO PRODUTO
		IF ALIAS()="PRO"
		
			GETOLD := GETLIST
			GETLIST:= {}
			nRECNOVO := 0
			
			IF ALERT("DESEJA ",{"ALTERAR","CADASTRAR NOVO"})=1
			   ALT_PRO()
			ELSE
			   INC_PRO()
			ENDIF
						
			GETLIST:= GETOLD
			SELE PRO
			IF nRECNOVO != 0
				DBGOTO( nRECNOVO )
			ENDIF
			
		ENDIF
		SETCURSOR(0)
		
	ELSEIF LASTKEY() == K_F6

	   IF ALIAS()='PRO'
		  // PESQUISA CODIGO DE BARRAS
		  PESQCODBARRA()
       ENDIF

	ELSEIF LASTKEY() == K_F11

	   IF ALIAS()='PRO'
		  // PESQUISA CODIGO DE BARRAS
		  PESQREF()
       ENDIF

	ELSEIF LASTKEY() == 27

		IF(VALTYPE(&(aCampo[1])) == "N",cVar := 0,cVar := SPACE(LEN(&(aCampo[1]))))
		SETCURSOR(0)
		RETURN(0)

	ELSEIF LASTKEY() == K_F2

		nRecno 		:= RECNO() 
		cSalvTela 	:= SAVESCREEN(24,00,24,79) 
		nOrd 			:= INDEXORD()
		DBSETORDER(nOrdPes1)
		COR("MENU") 
		@ 24,00 CLEAR TO 24,79
		cPer := IF(VALTYPE(&(aCampo[nF2])) == "C",SPACE(LEN(&(aCampo[nF2]))),0)
		@ 24,10 SAY aTitulo[nF2] + ": " GET cPer PICTURE aPict[nF2] VALID IF(aPict[nF2] == "999999",ZERO(@cPer,6),.T. == .T.)
		nOldCursor := SETCURSOR(2)
		READ

		IF EMPTY(cPer)
			RESTSCREEN(24,00,24,79,cSalvTela) 
			DBSETORDER(nOrd) 
			SETCURSOR(0)
		RETURN(1)

		ENDIF

		IF lZero
			cPer := STRZERO(VAL(cPer),LEN(cPer))
		ENDIF
	
		cPer:= IF(VALTYPE(cPer) == "C",ALLTRIM(cPer),cPer)
		SETCURSOR(nOldCursor)
		COR("MENU")
		@ 24,00 CLEAR TO 4,79
		DBGOTOP()
	
		IF !DBSEEK(cPer,.T.)
	
			BEEP()
			MENSAGEM("Desculpe, "+aTitulo[nF2]+" n„o encontrado !",3)
			DBGOTO(nRecno)
			RESTSCREEN(24,00,24,79,cSalvTela)
			SETCURSOR(0)
	
		ENDIF
	
		RESTSCREEN(24,00,24,79,cSalvTela)
		DBSETORDER(nOrd)
		SETCURSOR(0)
		RETURN(2)

	ELSEIF LASTKEY() == K_F5

		IF llF5

			nRecno		:= RECNO()
			cSalvTela 	:= SAVESCREEN(24,00,24,79)
			nOrd			:= INDEXORD()
			DBSETORDER(nOrdPes2)
			COR("MENU")
			@ 24,00 CLEAR TO 24,79
			nTAMCAMPO 	:= LEN(&(aCampo[nF5]))
			cPer			:= IF( nTAMCAMPO > 40, SPACE(40), SPACE(LEN(&(aCampo[nF5]))))
			@ 24,10 SAY ALLTRIM( LEFT(aTitulo[nF5],15) )+ ": " GET cPer PICTURE aPict[nF5] VALID IF(aPict[nF5] == "999999",ZERO(@cPer,6),.T. == .T.)
			nOldCursor	:= SETCURSOR(2)
			READ

			cPer:= ALLTRIM(cPer)
			SETCURSOR(nOldCursor)
			COR("MENU")
			@ 24,00 CLEAR TO 4,79

			IF EMPTY(cPer)
				RESTSCREEN(24,00,24,79,cSalvTela)
				DBSETORDER(nOrd)
				SETCURSOR(0)
				RETURN(1)
			ENDIF

			cPer := cEspaco+cPer
			DBGOTOP()
			IF !DBSEEK(cPer,.T.)
				BEEP()
				MENSAGEM("Desculpe, "+aTitulo[nF5]+" n„o encontrado !",3)
				DBGOTO(nRecno)
				RESTSCREEN(24,00,24,79,cSalvTela)
				SETCURSOR(0)
			ENDIF
			RESTSCREEN(24,00,24,79,cSalvTela)
			DBSETORDER(nOrd)
			SETCURSOR(0)
			RETURN(2)
		ENDIF
	ENDIF
	RETURN(1)

ELSEIF nMod=1
	// INICIO DO ARQUIVO

	BEEP()
	MENSAGEM("In¡cio da Consulta !",3)
	SETCURSOR(0)
	RETURN(1)

ELSEIF nMod=2

	// FIM DO ARQUIVO
	BEEP()
	MENSAGEM("Fim da Consulta !",3)
	SETCURSOR(0) ; RETURN(1)

ELSEIF nMod=3

	// ARQUIVO VAZIO
	BEEP()
	BEEP()
	MENSAGEM("N„o h  dados cadastrados para consulta !",4)
	SETCURSOR(0) ; RETURN(0)

ENDIF
RETURN(1)
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Dbedit muito lento no xHarbour

Mensagem por Jairo Maia »

Olá Rubens,

Não uso DbEdit(), mas salvo se algum colega tenha outra opinião, o DbEdit() no xHarbour é lento mesmo, e em rede chega a ficar impossível.

Melhora se você não usar elementos gráficos (drivers GT), e se você usar CDX, mas ainda assim não é solução satisfatória. Isto aliás já foi amplamente comentado inclusive em fóruns internacionais, e como você disse, e até onde tenho a oportunidade de acompanhar essas discussões, a solução foi sempre trocar por TBrowse().

Um detalhe não relacionado a lentidão, mas se aceita uma dica sobre transporte de dados de matrizes em xHarbour e Harbour, você deve usar AClone() Nas linhas 40 e 50 do seu exemplo você faz transporte de dados de matrizes (particularmente nesse caso específico, não vejo necessidade, pois GetList foi declarada Local), mas dentro do raciocínio, sugiro desta forma:

Código: Selecionar todos

GETOLD := AClone( GETLIST )
e
GETLIST:= AClone( GETOLD )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Dbedit muito lento no xHarbour

Mensagem por Kapiaba »

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Dbedit muito lento no xHarbour

Mensagem por rubens »

Pois eh... Jairo... parece que vai ser tbrowse, vou tentar generalizar porque tenho um função pesquisa usando o dbedit, vou tentar modificar para tbrowse...
Kabiaba eu já tinha visto esta postagem na pesquisa que fiz... para mim foi um dos inconclusivos... e ele é de 2007. Achei que de lá para cá alguém poderia ter achado uma solução. de qualquer forma agradeço a ajuda...

Obg

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Dbedit muito lento no xHarbour

Mensagem por fladimir »

Rubens TS resolve, porém vc quer saber pelo DBEdit, eu qdo migrei de clipper pra xHarbour na época tive muitos problemas com o DBEdit e a solução foi compilar o DBEdit.PRG junto com minha app e ai resolveu.

Porém qdo migrei pra Harbour tive que tirar o DBEdit.PRG, não precisando compilar mais junto pois no Harbour não tive mais problemas com o DBEdit.

Se vc procurar aki no fórum mesmo em postagens minhas de problemas com o DBEdit verá várias.

Se vc tiver o DBEdit.PRG vale a pena fazer o teste, pelo menos seria uma possibilidade a menos.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Dbedit muito lento no xHarbour

Mensagem por Jairo Maia »

Olá Pessoal,

Boa idéia Fladimir. Se resolveu com você, pode ser que seja a solução. No site do WAGUCS tem os fontes do DbEdit() aqui: http://www.vagucs.com.br/cgi-bin/vagucs ... dioma=ptbr. Procure por: DBEDIT Alternativo, e faça o teste.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Dbedit muito lento no xHarbour

Mensagem por rubens »

Eu compilei um dbedit.prg que vem no proprio xharbour... teve uma melhora significativa mas não resolveu por completo..
Fladimir quando você fala que no harbour não teve problemas, está se referindo que no harbour você usou o dbedit e não teve nenhum problema.. isso?
Vou montar um ambiente pro harbour amanhã e tentar compilar com o harbour... para ver...
Não acho que vou ter dificuldade de compilar... não tem lib externa... só uns ch modificado que o xharbour aceitou de boa...

Obg
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Dbedit muito lento no xHarbour

Mensagem por fladimir »

Isso mesmo Rubens, no Harbou não tive problemas com o DBEdit, faça isto q vc mencionou para comparar e ter uma base, mas no xHarbour compilando o DBEdit deveria ter funcionado, pelo menos na época com a versão xHb q eu usava funcionou, agora não lembro qual era a versão.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Dbedit muito lento no xHarbour

Mensagem por rubens »

Senhores...

Dentro da limitação da velocidade do pc o problema foi resolvido... depois de compilado com o harbour 3.20.
Até agora não houve mais nenhuma reclamação por parte dos usuários...

Obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Dbedit muito lento no xHarbour

Mensagem por paiva »

OI

veja se te ajuda


a maioria dos prg troquei dbedit por esta função

qq duvida pode perguntar


a fucnao esta embaixo encima mostro como usa-la


PAiva
Anexos
A.ZIP
(4.66 KiB) Baixado 80 vezes
Responder