Clipper On Line • Ver Tópico - Problemas com DbUseArea() e NetErr()

Problemas com DbUseArea() e NetErr()

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Problemas com DbUseArea() e NetErr()

Mensagempor Grings » 13 Dez 2005 16:40

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 ?
Grings
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 338
Data de registro: 18 Ago 2004 13:51
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Mensagempor Daniel » 13 Dez 2005 17:14

Troque o ultimo nil por .f. que é modo exclusivo.

DbUseArea(.F.,NIL,'STATUS.DBF',NIL,.F.,.T.)
If NetErr()
Alert('......')
Quit
Else
.....
EndIf
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

Mensagempor Grings » 13 Dez 2005 17:26

Não adiantou, após algumas tentativas, maximizando e minimizando janelas, e tentando abrir novamente o sistema abre várias vezes.
Grings
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 338
Data de registro: 18 Ago 2004 13:51
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Mensagempor Daniel » 14 Dez 2005 07:06

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.
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

Mensagempor Grings » 14 Dez 2005 07:31

É isso mesmo Daniel, o erro acontece com DbCloseAll(). Valeu!
Grings
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 338
Data de registro: 18 Ago 2004 13:51
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Problemas com DbUseArea() e NetErr()

Mensagempor alexlucc » 07 Jun 2018 20:48

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
Anexos
erro.png
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor Jairo Maia » 07 Jun 2018 21:31

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)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor alexlucc » 07 Jun 2018 23:28

Obrigado Jairo, vou usar o strtran e ver se resolve.
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor alexlucc » 07 Jun 2018 23:50

Resolvido Jairo !!!, Obrigado mais uma vez.

ArqD := strtran(GetEnv("computername"),"-"
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor alexlucc » 20 Mar 2019 20:10

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
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor JoséQuintas » 20 Mar 2019 23:35

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor Eric.Developer » 22 Mar 2019 15:26

Um arquivo DBF pode conter hífen, iniciar com número ou sublinhado, são proibidos apenas para o ALIAS (quando não informado assumirá o mesmo nome do arquivo).
USE _CLI-01 ALIAS CLIENTE


Jairo Maia escreveu:Tem um caractere não permitido para o nome do .DBF, a saber o hífen: "-". Você tem que tratar isso.


Senhores, criem o tópico com a sua respectiva pergunta, não misturem os assuntos. Além de atrapalhar o tópico original, a sua questão ficará perdida sem ser notada.
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 8 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor Ranier » 10 Abr 2019 09:10

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
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor rubens » 10 Abr 2019 09:18

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Problemas com DbUseArea() e NetErr()

Mensagempor JoséQuintas » 10 Abr 2019 10:36

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro