Página 1 de 1

Dúvida no bloqueio de registro

Enviado: 08 Dez 2011 16:15
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

Dúvida no bloqueio de registro

Enviado: 08 Dez 2011 17:21
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.

Dúvida no bloqueio de registro

Enviado: 08 Dez 2011 17:55
por clipsis
Olá, Pablo César !

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

Valeu
Abrs