Página 1 de 1
Problemas com DbUseArea() e NetErr()
Enviado: 13 Dez 2005 17:40
por Grings
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 ?
Enviado: 13 Dez 2005 18:14
por Daniel
Troque o ultimo nil por .f. que é modo exclusivo.
DbUseArea(.F.,NIL,'STATUS.DBF',NIL,.F.,.T.)
If NetErr()
Alert('......')
Quit
Else
.....
EndIf
Enviado: 13 Dez 2005 18:26
por Grings
Não adiantou, após algumas tentativas, maximizando e minimizando janelas, e tentando abrir novamente o sistema abre várias vezes.
Enviado: 14 Dez 2005 08:06
por Daniel
este tipo de proteção so funciona se vc nao fechar os arquivos dbf.
exemplo:
se vc usar 'close all' ou 'close databases' ja quebra a sua potreção.
Enviado: 14 Dez 2005 08:31
por Grings
É isso mesmo Daniel, o erro acontece com DbCloseAll(). Valeu!
Problemas com DbUseArea() e NetErr()
Enviado: 07 Jun 2018 20:48
por alexlucc
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
Problemas com DbUseArea() e NetErr()
Enviado: 07 Jun 2018 21:31
por Jairo Maia
Tem um caractere não permitido para o nome do .DBF, a saber o hífen: "-". Você tem que tratar isso.
Problemas com DbUseArea() e NetErr()
Enviado: 07 Jun 2018 23:28
por alexlucc
Obrigado Jairo, vou usar o strtran e ver se resolve.
Problemas com DbUseArea() e NetErr()
Enviado: 07 Jun 2018 23:50
por alexlucc
Resolvido Jairo !!!, Obrigado mais uma vez.
ArqD := strtran(GetEnv("computername"),"-"
Problemas com DbUseArea() e NetErr()
Enviado: 20 Mar 2019 20:10
por alexlucc
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
Problemas com DbUseArea() e NetErr()
Enviado: 20 Mar 2019 23:35
por JoséQuintas
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.
Problemas com DbUseArea() e NetErr()
Enviado: 10 Abr 2019 09:10
por Ranier
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
Olá amiguinho,
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
Problemas com DbUseArea() e NetErr()
Enviado: 10 Abr 2019 09:18
por rubens
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
Problemas com DbUseArea() e NetErr()
Enviado: 10 Abr 2019 10:36
por JoséQuintas
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 => dbClearFilter( NIL )
#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.