Página 1 de 1

problemas com o Dbedit

Enviado: 30 Jul 2011 12:48
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

problemas com o Dbedit

Enviado: 01 Ago 2011 11:30
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.

problemas com o Dbedit

Enviado: 01 Ago 2011 14:09
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.

problemas com o Dbedit

Enviado: 01 Ago 2011 14:19
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?

problemas com o Dbedit

Enviado: 01 Ago 2011 14:21
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)

problemas com o Dbedit

Enviado: 01 Ago 2011 14:25
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.