Problemas com DbUseArea() e NetErr()
Moderador: Moderadores
Problemas com DbUseArea() e NetErr()
Uso a seguinte rotina para não permitir a abertura do sistema duas vezes:
DbUseArea(´.F.´,NIL,´STATUS.DBF´,NIL,NIL,.T.)
If NetErr()
Alert(´......´)
Quit
Else
.....
EndIf
Ocorre que as vezes falha, quando entra a proteção de tela e o ícone vai para barra de tarefas ocorre a falha, não é sempre.
Alguma dica do que pode estar ocorrendo ?
DbUseArea(´.F.´,NIL,´STATUS.DBF´,NIL,NIL,.T.)
If NetErr()
Alert(´......´)
Quit
Else
.....
EndIf
Ocorre que as vezes falha, quando entra a proteção de tela e o ícone vai para barra de tarefas ocorre a falha, não é sempre.
Alguma dica do que pode estar ocorrendo ?
-
alexlucc
- Usuário Nível 1

- Mensagens: 49
- Registrado em: 13 Nov 2016 19:19
- Localização: Nova Iguaçu /rj
Problemas com DbUseArea() e NetErr()
Estou usando exatamente essa função para a mesma finalidade, mais ela está dando erro. Onde estou errando alguém poderia me ajudar .... segue o erro em anexo.
ArqD := GetEnv("computername")//+".DBF"
If !File(ArqD+".dbf")
Estr:={}
AADD(Estr,{"CODIGO" ,"C",05,0})
DbCreate("&ArqD",Estr)
endif
dbUseArea(.T.,NIL,"&ArqD",NIL,.F.,.F.)
Alert("SISTEMA NAO PODE SER ABERTO MAIS DE UMA VEZ NA MESMA MAQUINA !!!")
Quit
If NetErr()
Alert('O programa ja esta aberto em outra janela! Pressione qualquer tecla e, apos, maximize-o, com o mouse, na barra de tarefas...', )
Quit
Else
Use &ArqD New
EndIf
ArqD := GetEnv("computername")//+".DBF"
If !File(ArqD+".dbf")
Estr:={}
AADD(Estr,{"CODIGO" ,"C",05,0})
DbCreate("&ArqD",Estr)
endif
dbUseArea(.T.,NIL,"&ArqD",NIL,.F.,.F.)
Alert("SISTEMA NAO PODE SER ABERTO MAIS DE UMA VEZ NA MESMA MAQUINA !!!")
Quit
If NetErr()
Alert('O programa ja esta aberto em outra janela! Pressione qualquer tecla e, apos, maximize-o, com o mouse, na barra de tarefas...', )
Quit
Else
Use &ArqD New
EndIf
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com DbUseArea() e NetErr()
Tem um caractere não permitido para o nome do .DBF, a saber o hífen: "-". Você tem que tratar isso.
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)
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)
-
alexlucc
- Usuário Nível 1

- Mensagens: 49
- Registrado em: 13 Nov 2016 19:19
- Localização: Nova Iguaçu /rj
Problemas com DbUseArea() e NetErr()
Resolvido Jairo !!!, Obrigado mais uma vez.
ArqD := strtran(GetEnv("computername"),"-"
ArqD := strtran(GetEnv("computername"),"-"
-
alexlucc
- Usuário Nível 1

- Mensagens: 49
- Registrado em: 13 Nov 2016 19:19
- Localização: Nova Iguaçu /rj
Problemas com DbUseArea() e NetErr()
Boa noite pessoal!
Gostaria de uma ajuda. Preciso acelerar minha pesquisa e o dbsetfilter está um pouco lento em rede, como poderia aumentar essa velocidade.
Uso para compilação harbour 3.2 +bcc5.5. e RDD CDX Desde já agradeço.
Estou postando o trecho do meu código que trata a questão:
SETCURSOR(1)
SETCOLOR(Mcor[1])
Sombra(08,24,15,57,frame[3])
@ 10,26 SAY PADC("Procurar Por:",30) COLOR "B/W"
@ 11,26 SAY PADC(cab,30) COLOR "R*/W"
@ 13,26 GET COD PICT "@!"
READ
SETCURSOR(0)
DBSELECTAR("Pro")
INDEX ON NOMPRO+CODPRO TAG "NOM1" TO nompro1 //NOMPRO=COD // .AND. NUMERO=cNUMERO
DBSETORDER("NOM1")
DBSETFILTER( { || trim(COD) $ NOMPRO}, trim(COD) $ NOMPRO)
DBGOTOP()
IF LASTKEY() = K_ESC
SETCOLOR(cor)
RESTSCREEN(05,15,20,65,t)
dbsetfilter()
// DBGOTO(reg)
RETURN
ENDIF
if ! trim(cod) $ nompro //(cod $ nome'1_2_3')
alert("Informacao nao encontrada!!!;Pesquise Novamente !!!")
dbsetfilter()
endif
Gostaria de uma ajuda. Preciso acelerar minha pesquisa e o dbsetfilter está um pouco lento em rede, como poderia aumentar essa velocidade.
Uso para compilação harbour 3.2 +bcc5.5. e RDD CDX Desde já agradeço.
Estou postando o trecho do meu código que trata a questão:
SETCURSOR(1)
SETCOLOR(Mcor[1])
Sombra(08,24,15,57,frame[3])
@ 10,26 SAY PADC("Procurar Por:",30) COLOR "B/W"
@ 11,26 SAY PADC(cab,30) COLOR "R*/W"
@ 13,26 GET COD PICT "@!"
READ
SETCURSOR(0)
DBSELECTAR("Pro")
INDEX ON NOMPRO+CODPRO TAG "NOM1" TO nompro1 //NOMPRO=COD // .AND. NUMERO=cNUMERO
DBSETORDER("NOM1")
DBSETFILTER( { || trim(COD) $ NOMPRO}, trim(COD) $ NOMPRO)
DBGOTOP()
IF LASTKEY() = K_ESC
SETCOLOR(cor)
RESTSCREEN(05,15,20,65,t)
dbsetfilter()
// DBGOTO(reg)
RETURN
ENDIF
if ! trim(cod) $ nompro //(cod $ nome'1_2_3')
alert("Informacao nao encontrada!!!;Pesquise Novamente !!!")
dbsetfilter()
endif
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problemas com DbUseArea() e NetErr()
Esse vai ser difícil.
Na SIXCDX tinha um recurso de incluir tudo que é palavra no índice, mas sem sei se o Harbour faz igual, ou se esse recurso ajudaria em alguma coisa.
Na SIXCDX tinha um recurso de incluir tudo que é palavra no índice, mas sem sei se o Harbour faz igual, ou se esse recurso ajudaria em alguma coisa.
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/
Problemas com DbUseArea() e NetErr()
Olá amiguinho,alexlucc escreveu:Boa noite pessoal!
Gostaria de uma ajuda. Preciso acelerar minha pesquisa e o dbsetfilter está um pouco lento em rede, como poderia aumentar essa velocidade.
Uso para compilação harbour 3.2 +bcc5.5. e RDD CDX Desde já agradeço.
Estou postando o trecho do meu código que trata a questão:
SETCURSOR(1)
SETCOLOR(Mcor[1])
Sombra(08,24,15,57,frame[3])
@ 10,26 SAY PADC("Procurar Por:",30) COLOR "B/W"
@ 11,26 SAY PADC(cab,30) COLOR "R*/W"
@ 13,26 GET COD PICT "@!"
READ
SETCURSOR(0)
DBSELECTAR("Pro")
INDEX ON NOMPRO+CODPRO TAG "NOM1" TO nompro1 //NOMPRO=COD // .AND. NUMERO=cNUMERO
DBSETORDER("NOM1")
DBSETFILTER( { || trim(COD) $ NOMPRO}, trim(COD) $ NOMPRO)
DBGOTOP()
IF LASTKEY() = K_ESC
SETCOLOR(cor)
RESTSCREEN(05,15,20,65,t)
dbsetfilter()
// DBGOTO(reg)
RETURN
ENDIF
if ! trim(cod) $ nompro //(cod $ nome'1_2_3')
alert("Informacao nao encontrada!!!;Pesquise Novamente !!!")
dbsetfilter()
endif
Já ouviu falar da função DBSeek?
DBSetFilter é "muuuito" lento. Além de que criar um índice na hora de fazer a pesquisa, não ajuda.
O correto é criar antes e somente usá-lo na hora de pesquisar.
Abraços.
Ranier
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Problemas com DbUseArea() e NetErr()
Bom dia...
Muito estranho esse seu filtro.. é por código ou por nome ou por parte do nome.. ?
Se for por parte do nome só vai conseguir ter algum desempenho quando a tabela estiver local... se for em rede pode esquecer... aí vai ter que usar ordwildseek , pesquisa nos downloads por consultacdx, o Toledo deixou um exemplo bem funcional.
E uma dica:
Use DbclearFilter() no lugar de DbSetFilter() para limpar o filtro. Eu usava dbsetfilter() e aparecia um monte de erros aleatórios, depois que comecei a usar dbclearfilter() esses erros desapareceram...
Rubens
Muito estranho esse seu filtro.. é por código ou por nome ou por parte do nome.. ?
Se for por parte do nome só vai conseguir ter algum desempenho quando a tabela estiver local... se for em rede pode esquecer... aí vai ter que usar ordwildseek , pesquisa nos downloads por consultacdx, o Toledo deixou um exemplo bem funcional.
E uma dica:
Use DbclearFilter() no lugar de DbSetFilter() para limpar o filtro. Eu usava dbsetfilter() e aparecia um monte de erros aleatórios, depois que comecei a usar dbclearfilter() esses erros desapareceram...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problemas com DbUseArea() e NetErr()
#command SET FILTER TO => dbClearFilter( NIL )rubens escreveu: E uma dica:
Use DbclearFilter() no lugar de DbSetFilter() para limpar o filtro. Eu usava dbsetfilter() e aparecia um monte de erros aleatórios, depois que comecei a usar dbclearfilter() esses erros desapareceram...
#command SET FILTER TO <exp> => dbSetFilter( <{exp}>, <"exp"> )
#command SET FILTER TO <x:&> => if ( Empty( <(x)> ) ) ; dbClearFilter() ;;
else ; dbSetFilter( <{x}>, <(x)> ) ; end
Confundiu SET FILTER TO com dbSetFilter()
Isso é parte do arquivo std.ch, definição padrão do Harbour/Clipper.
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/

