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,'Í','³')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)

