PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → BLOQUEANDO A SEGUNDA ESTACAO NUM REGISTRO EM EDIÇÃO - BY PAULO VIANA
BLOQUEANDO A SEGUNDA ESTACAO NUM REGISTRO EM EDIÇÃO - BY PAULO VIANA
Iniciado por Boller, 19,mar. 2023 21:49 - 1 respuesta
Miembro registrado
4.521 mensajes
Publicado el 19,marzo 2023 - 21:49
BLOQUEANDO A SEGUNDA ESTACAO NUM REGISTRO EM EDIÇÃO - BY PAULO VIANA

Bloqueio de registro concorrente entre dois ou mais usuarios

if edt_lock = "s"
if cbox_write = False
if not readseekfirst(tabela, chave, busca)
return
end

if hinfolock(tabela, nrecnum(tabela)) <> ""
hreset(tabela)
infowithtimeout(2s,"registro bloqueado por outro usuario-aguarde!")
return
end

glo_lock_salvar(mywindow..alias, tabela, hrecnum({tabela}))
gbTemLock = true

else

if not hreadseekfirst(tabela, chave, busca)
return
end

if hinfolock(tabela, hrecnum(tabela)) = ""

// realiza o lock
if not hlockrecnum(tabela, hrecnumcurrent, hlockwrite)
return
end

glo_lock_salvar(mywidow..alias, tabela, hrecnum({tabela}))

gbTemLock = true

else

//nao realiza o lock
infowithtimeout(2s, "Registro bloqueado por um outro usuario - apenas consulta
btn_salvar..state = grayed

end

else

if no readseekfirst(tabela, chave, busca)
return
end

end

filetoscreen()


BY PAULO VIANA





--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensaje modificado, 19,marzo 2023 - 21:57
Miembro registrado
4.521 mensajes
Publicado el 20,marzo 2023 - 00:05
// Outro exemplo
//
// verifica se o registro está bloqueado por outro usuário
FUNCTION is_record_locked(tabela, chave, busca)
record_number = tabela.Find(chave, busca)
IF record_number < 0 THEN
RETURN False
END
RETURN tabela.InfoLock(record_number) <> ""
END

// tenta bloquear o registro para escrita
FUNCTION lock_record(tabela, chave, busca)
record_number = tabela.Find(chave, busca)
IF record_number < 0 THEN
RETURN False
END
IF NOT tabela.Lock(record_number) THEN
RETURN False
END
RETURN True
END

// exemplo de uso
IF edt_lock = "s" THEN
IF cbox_write THEN
IF is_record_locked(tabela, chave, busca) THEN
InfoWithTimeout(2s,"registro bloqueado por outro usuário - aguarde!")
ELSE
IF lock_record(tabela, chave, busca) THEN
gbTemLock = True
glo_lock_salvar(mywindow.alias, tabela, hrecnum(tabela))
END
END
ELSE
btn_salvar.state = grayed
END
ELSE
IF NOT readseekfirst(tabela, chave, busca) THEN
RETURN
END
FileToScreen()
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/