Página 1 de 1

Ajuda com DBEDIT

Enviado: 21 Nov 2008 21:28
por EANDRIOLI
Senhores:

Estou com um problema no fonte anexo, que quando mostra os dados pelo dbedit quando uma locação é excluida, a tela nao está sendo atualizada, ou melhor, devido ao programa buscar os dados de Nome do Veiculo e Nome do Cliente de outro arquivo DBF a atualização nao esta ocorrendo.

Estou enviando o fonte e os dbfs para teste (os dbfs nao sao permitidos).

Aguardo de informações.

Obrigado!!!

Erasmo.

SEGUE DBFS...

Enviado: 21 Nov 2008 21:32
por EANDRIOLI
ANEXO, DBFS ZIPADOS...

Re: AJUDA COM DBEDIT

Enviado: 21 Nov 2008 21:44
por alaminojunior
Precisa forçar a re-exibição dos dados. O dbedit envia dois parâmetros, um deles é exatamente para este fim. Se me lembro bem é 2.

Ajuda com DBEDIT

Enviado: 25 Nov 2008 22:12
por Pablo César
Será que nesses casos o mais indicado não seria utilizar o TBROWSE ?

Re: Ajuda com DBEDIT

Enviado: 25 Nov 2008 23:48
por alaminojunior
A essa altura do campeonato, seria trocar seis por meia-dúzia.
Mas é só fazer uso correto dos parâmetros que o DbEdit() fornece, que funciona belezinha.

Re: Ajuda com DBEDIT

Enviado: 26 Nov 2008 10:33
por Eolo
Erasmo,

É só fazer uma função sua trabalhar junto com o DBEdit. Sem essa função (que é o seu caso), o DBEdit
dá respostas "padrão". Com a função, você controla qualquer tecla pressionada pelo usuário.

Veja o EXEMPLO a seguir, que é resumidamente como eu usava.

Código: Selecionar todos

*...
v1:={"strzero(acodi,5)+' '+aapel+iif(empty(arest),'   ',' ¦ ')+aclie"}
v2:={"@"}4
v3:={"Cód.  Apelido              Nome"}
v4:=""
dbedit(04,00,22,70,v1,"QUALQUER",v2,v3,v4)
*...

Código: Selecionar todos

FUNCTION QUALQUER
* a função retorna 0, 1 ou 2 ao dbedit
* 0 = sai do dbedit
* 1 = continua o dbedit
* 2 = reconstrói a tela e continua o dbedit
priv x
do case
case lastkey()=27
  * o usuário tecla ESC no dbedit, para sair
  x=0
case lastkey()=-4
  * o usuário tecla F5 para DELETAR registro
  deleta()
  x=2
case lastkey()=13
  * o usuário tecla ENTER para EDITAR registro
  edita()
  x=1
* outros CASE, para qualquer tecla pressionada pelo usuário
endc
retu x

Código: Selecionar todos

function deleta()
*...

function edita()
*...

Re: Ajuda com DBEDIT

Enviado: 26 Nov 2008 12:57
por rbonotto
No final de sua função coluW voce tem um RETURN(1)
Troque-o por RETURN(2)

Abs,

Re: Ajuda com DBEDIT

Enviado: 28 Nov 2008 18:30
por Ademir
Pessoal ! Muito boa tarde !

Sempre que tinha uma dúvida quanto ao uso do Dbedit, entrava aqui no forum para pedir ajuda e sempre tinha alguem que me dizia: Muda para o Tbrowse que não vai se arrepender !!! Bom, como grande parte dos usuarios, daqui do forum inclusive, alegava certa dificuldade em "entender" o funcionamento do dito Tbrowse, eu sempre acabava desistindo. Começava a ver alguma coisa, mas logo desistia por falta de tempo ou mesmo de entendimento. Esses dias, desenvolvendo um novo sistema para um cliente, resolvi testar a visualização dos dados pelo dbedit em rede. Como sempre usei o Dbedit, fiquei surpreso ao verificar que a atualização das telas em rede não funciona tão bem quanto imaginava. Por exemplo, se na tela onde estou, alguem excluiu um registro em outra estação, a tela é atualizada mas os registros ficam sobrepostos ao serem movimentados pelas setas, o que pode causar confusão ao usuário. Outro exemplo é se nesta mesma tela tento alterar um registro já excluido em outra estação. O registro é editado normalmente, mas quando a alteração é confirmada, o ponteiro volta ao registro anterior, pois a tela é atualizada (set dele ON), o que tambem pode confundir o usuario. Então, hoje, de uma vez por todas resolvI encarar de frente o bicho papão do Tbrowse. Comecei a fuçar em livros e no forum e descobrí que o mesmo funciona legal em rede. Na atualização da tela, a movimentação entre os registros quando ha excluidos funciona perfeitamente. Nas alterações, para resolver o problema, salvo um campo qualquer em uma variavel, e depois da tecla pressionada, dou outro Refreshall() e comparo o campo atual com a variavel. Se forem diferentes, significa que a tela foi atualizada e assim dou um loop e aborto a alteração antes da edição do registro. Como comecei a desvendar o Tbrowse hoje, lógico, tenho ainda um monte de dúvidas. Então, vamos lá:

O loop principal: é o local onde se validam as teclas para cada objeto tbrowse ?

É possivel ter um loop principal "genérico" que funcione em objetos diferentes para tratar teclas comuns ?

As setas para baixo, para cima, para direita e para a esquerda tem que ser obrigatoriamente tratadas em cada loop principal ?

Existe alguma limitação do objeto tbrowse quanto a quantidade de registros no arquivo ?

Como faço para alterar a ordem de visualização das colunas do tbrowse ?


Acho que é só. Espero que tenham entendido minhas duvidas. Tomara que a continuidade desse tópico ajude ainda mais pessoas que assim como eu "tremiam" quando ouviam falar em Tbrowse. Por enquanto, muito obrigado.