{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 03-12-2002 Versión actual: 1.0.0 Fecha versión actual: 03-12-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit TablaContadores; interface uses //Generales Forms, SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares IBErrorCodes, IB, //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos, //Contador Contadores, RdxGestorContadores; type TdmTablaContadores = class(TDataModule) public function BloquearRC : boolean; end; var dmTablaContadores: TdmTablaContadores; implementation {$R *.DFM} { TdmTablaContadores } uses Excepciones, Mensajes, Literales; function TdmTablaContadores.BloquearRC: boolean; {Esta función bloquea la tabla de contadores para que ningún otro usuario pueda entrar} var oSQL : TIBSQL; begin Result := False; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('update CONTADORES '); SQL.Add('set COMUN = (select COMUN from CONTADORES where CODIGOTABLA = 0) '); SQL.Add('where CODIGOTABLA = 0'); try Prepare; ExecQuery; Result := True; except on E : EIBError do begin case E.IBErrorCode of isc_lock_conflict : begin dmBaseDatos.Rollback; VerMensaje(msgOpcTablaContBloqueada); Result := False; end else begin dmBaseDatos.Rollback; TratarExcepcion(E); Result := False; end; end; end; on E : Exception do begin dmBaseDatos.Rollback; TratarExcepcion(E); Result := False; end; end; end; end; end.