problemas com o Dbedit

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

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

problemas com o Dbedit

Mensagem por porter »

Olá pessoal, gostaria de saber se a forma de trabalhar com o Dbedit,é diferente do clipper, na rotina abaixo se o arquivo estiver vazio, ele nao executa o modo = 3, e deveria executar quandoo arquivo estiver vazio. Na rotina abaixo eu vou excluindo os registros um a um, mas quando excluo o ultimo registro, ele nao executa a linha (elseif modo = 3) para voltar para a tela anterior.

Estou compilando com o xHarbour 1.2.1
obrigado.

if modo = 1
mensagem("Inicio do arquivo")
return(1)
elseif modo = 2
mensagem("Fim do arquivo")
return(1)
elseif modo = 3 && arquivo Vazio <-- nao executa
mensagem("Arquivo vazio")
return(0)
elseif modo = 4
if lastkey() = 101 && teclei a letra 'e' para excluir o registro
rlock()
delete
pack
return(2)
endif
endif
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

problemas com o Dbedit

Mensagem por Jairo Maia »

Olá Porter,

Tente alterar o modo de exclusão assim:

Código: Selecionar todos

if lastkey() = 101 && teclei a letra 'e' para excluir o registro
 rlock()
 delete
 pack
 If Recc() > 0
  return(2)
 ElseIf Recc() = 0
  return( 0 )
 EndIf
endif
Teste e veja se é isso que vc quer.
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)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

problemas com o Dbedit

Mensagem por porter »

Olá Jairo,
Acho que nao expliquei corretamente, eu tenho um Dbedit, e vou excluindo registro por registro, quando excluo o ultimo registro e o arquivo fica vazio, ele nao executa o comando abaixo (modo =3 arquivo vazio) para voltar para a tela anterior, entendeu ?
Tenho que pressionar uma tecla para direita ou esquerda para ai sim ele executar o comando abaixo e voltar para a tela anterior. No clipper funciona legal, parece que no xHarbour a forma de trabalhar com isso é diferente.

elseif modo = 3 && arquivo Vazio <-- nao executa
mensagem("Arquivo vazio")
return(0)


Valeu, Obrigado.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

problemas com o Dbedit

Mensagem por Jairo Maia »

Olá Pórter,

Sim, entendi assim mesmo. Vc fez a alteração que sugeri? Veja:

Código: Selecionar todos

If Recc() > 0  // Se ainda tem registro no arquivo,
 return(2)  // permanece no dbedit,
ElseIf Recc() = 0  // se o arquivo está vazio,
 return( 0 )  // fecha o dbedit voltando para a tela anterior.
EndIf 
Vc fez estas alterações?
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)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

problemas com o Dbedit

Mensagem por porter »

Olá Jairo,
Acho que fui eu que nao entendi o que vc passou.
Resolveu o problema, esta fazendo o que eu quero, mas fiquei sem entender porque quando o arquivo esta vazio, ele nao executa a linha (elseif modo = 3).


elseif modo = 3 && arquivo Vazio <-- nao executamensagem("Arquivo vazio")
return(0)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

problemas com o Dbedit

Mensagem por Jairo Maia »

Entendi. Mas é que no xHarbour ele tem um comportamente um pouco diferente. Ele permanece até um novo acesso na UDF. Vc pode acrescentar a mensagem de "arquivo vazio" antes de sair. Assim o usuário sabe pq fechou o editor.
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)
Responder