Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Como PARAR un Bloqueo Viejo ???? (https://www.clubdelphi.com/foros/showthread.php?t=56633)

AGAG4 22-05-2008 16:42:53

Como PARAR un Bloqueo Viejo ????
 
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 Noteví 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 Noteví 23-05-2008 09:07:02

¿Por qué no haces algo parecido a esto y te evitas los bloqueos?

Código:

    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....


La franja horaria es GMT +2. Ahora son las 05:49:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi