PDA

Ver la Versión Completa : Como PARAR un Bloqueo Viejo ????


AGAG4
22-05-2008, 16:42:53
Uso Firebird 1.5.5

Yo me respondo al 50%, la forma de PARAR un bloqueo de X registro es Aceptar la Transacción, pero, que tal que si al momento de que exista dicho bloqueo de registro se le ocurre windows marca algun error de sus famosos pantallazos azules, el registro permanecerá bloqueado hasta que no se reinicie el servidor, lo que ando investigando es como PARAR dicho bloqueo en 30 seg ó 1 min de vida del bloqueo, espero me haya explicado, si no haganmelo saber....

Agradezco cualquier ayuda al respecto ....

Casimiro Notevi
22-05-2008, 18:52:02
Yo antes me preguntaría: ¿para qué usas el bloqueo?, ¿es necesario?

AGAG4
22-05-2008, 23:15:58
En mi caso es muy necesario, te platico, tengo una aplicación para Facturar, cada factura tiene su folio, aqui tenemos 10 computadoras con el sistema, donde facturan al mismo tiempo, mandan a imprimir en ocasiones todas al mismo tiempo, por lo tanto para que ninguna tome el mismo folio y evitar que los folios se desfasen es decir, que tiene que coincidir el folio del sistema con el folio del papel de la factura , yo bloqueo 1 registro de X tabla antes de tomar el Folio Consecutivo, para que las demás PC's se esperen a que se imprima y grabe la factura, al terminar esto, se desbloquea el registro y asi continua la siguiente PC, el unico inconveniente es que muy rara vez ha pasado de que se bloquea una PC, aparezca el pantallazo azul de windows, alli se atoran todas las pc's, es por eso que preguntaba si habia alguna forma de que dicho bloqueo se detuviera para que las demás no se quedarán congeladas, esperando a que el registro se desbloquee....

Espero me haya explicado ....

Casimiro Notevi
23-05-2008, 09:07:02
¿Por qué no haces algo parecido a esto y te evitas los bloqueos?


try
DMdoc.QRdocumentoSERIE.AsString := cbSerie.Text;
DMdoc.QRdocumentoNUMERO.AsInteger := StrToInt(edNumero.Text); // _ULTNUMTOCA_
DMdoc.QRdocumentoFECHA.AsDateTime := StrToDate(edFecha.Text);
DMdoc.QRdocumentoHORA.AsDateTime := StrToTime(edHora.Text);
DMdoc.QRdocumentoCLIENTE.AsInteger := StrToInt(edCodCliente.Text);
DMdoc.QRdocumento.Post;
// DMdoc.QRdocumento.Transaction.CommitRetaining; // ya se hace en el afterpost del dataset
except
try
for iIntentos:= 1 to _INTENTOSGRABAR_ do
begin
try
DMdoc.QRdocumento.Post;
break;
except
Inc( _ULTNUMTOCA_ );
DMdoc.QRdocumentoNUMERO.AsInteger := _ULTNUMTOCA_;
end;
end;
except // si finalmente no se logra guardar la linea, deshacerla
DMdoc.QRdocumento.Transaction.RollbackRetaining;
end;
end;

AGAG4
28-05-2008, 01:44:25
Podría ser, no es mala idea, es lo que voy acabar haciendo, para dejarme de broncas, muchas gracias CASIMIRO por tu sugerencia.... que tengas buen día....