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.