Dúvida no bloqueio de registro

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

Moderador: Moderadores

clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

Dúvida no bloqueio de registro

Mensagem por clipsis »

Olá, boa tarde a todos!!

Tenho alguns projetos gerados pelo GASPRO que foram migrados para o Harbour.
Estou tendo um problema grave em alguns clientes, segue o ambiente:

- uma tela de vendas: com pai (venda ) + filho (itens), que quando incluo um item o arquivo venda é atualizado nos campos total da venda e total de itens

o que acontece em alguns casos: esses campos total da venda e total de itens são atualizados corretamente, porém o registro do item não é incluído.

Abrindo o fonte verifiquei as seguintes instruções:

Código: Selecionar todos

      GO BOTT                      // vamos bloquear o final do
      SKIP                         // arq para que nehum outro
      BLOREG(0,.5)                 // usuario possa incluir
Isso poderia causar o quadro acima ? Porque pelo que entendi é que: se trava o final do arquivo e se algum outro terminal tentar incluir não vai conseguir.
Essas instruções são realmente necessárias?
Logo após elas tenho:

Código: Selecionar todos

   APPEND BLANK
   FOR i=1 TO FCOU()
      msg=FIEL(i)
      rep[i]=M->&msg.
      REPL &msg. WITH rep[i]
   NEXT
E pelo que sei o APPEND BLANK já trava o novo registro, quando o arquivo está aberto compartilhado.
Olhei todos os fontes envolvidos e o único local onde achei alguma coisa "meio estranha" foi aqui.
Se puderem me ajudar, desde já agradeço

Abrs
Clipper 5.2/Blinker
Harbour 3.0/Mingw
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida no bloqueio de registro

Mensagem por Pablo César »

Puxa, não tinha conhecimento dessa metodologia para que não adicionem novos registros. Relamente, faz sentido esse procedimento. Não vejo nada errado nisso. Apenas acho que após o APPEND BLANK deve ser tratado, pois poderá haver casos que não é possível adicionar. E ainda mais se tem outro terminal fazendo o mesmo. acho que deve ser tratado como eu acostumo fazer nas minhas funções de persistência:

Código: Selecionar todos

FUNCTION ADIREG(vezes)
LOCAL vtela
APPEND BLANK
IF !NETERR()
   RETURN(.T.)
ENDIF
vtela:=SAVESCREEN(24,00,24,79)
MENSAGEM("Aguarde. Tentando acesso ao arquivo "+(DBF()))
DO WHILE VEZES > 0
   APPEND BLANK
   IF !NETERR()
      RESTSCREEN(24,00,24,79,vtela)
      RETURN(.T.)
   ENDIF
   INKEY(1)
   vezes--
ENDDO
RESTSCREEN(24,00,24,79,vtela)
RETURN(.F.)
Nunca tive problema em adicionar registros. Mas eu ficaria desconfiado com aquele procedimento que não permite outro adicionar. Se bem que poderia ser inutilizado, experimente com a função que dei em lugar do APPEND BLANK e coloque como comentário aquele procedimento.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

Dúvida no bloqueio de registro

Mensagem por clipsis »

Olá, Pablo César !

Obrigado pela resposta. Vou tentar como vc mencionou, depois posto os resultados.

Valeu
Abrs
Clipper 5.2/Blinker
Harbour 3.0/Mingw
Responder