Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 05-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Desempolvando mi cajón me he encontrado esta que alguna vez hice:

Código Delphi [-]
{
  Comprueba si el registro actual de la tabla especificada está bloqueado

  La rutina comienza llamando a dbiIsRecordLocked para ver si el registro
  está bloqueado por la sesión actual.

  De no ser así, llama a dbiGetRecord para intentar poner un bloqueo de
  escritura en el registro. Si el registro ya estaba bloqueado, dbiGetRecord
  devuelve un error con lo cual determinamos que el registro está bloqueado.
}
function IsRecordLocked(Table: TTable): Boolean;
var
  Locked : BOOL;
  hCur   : hDBICur;
  dbiRes : DBIResult;

begin
  Table.UpdateCursorPos;
  
  { Ver si el registro está bloqueado por la sesión actual }
  Check(dbiIsRecordLocked(Table.Handle, Locked));
  Result := Locked;

  { Si no, ver si está bloqueado por alguna otra sesión }
  if not Result then
  begin
    { hCur <- copia del cursor al registro actual }
    Check(dbiCloneCursor(Table.Handle, false, false, hCur));

    try
      { Intentar abrir el registro con un bloqueo de escritura }
      dbiRes := dbiGetRecord(hCur, dbiWRITELOCK, nil, nil);

      if (dbiRes <> DBIERR_NONE) then
      begin
        { Si se trata de un error de bloqueo, devolver TRUE }
        if (HiByte(dbiRes) = ERRCAT_LOCKCONFLICT) then
          Result := true
        else
          { En caso contrario generar una excepción }
          Check(dbiRes);
      end
      else
        { Si no hubo error, dbiGetRecord bloqueó el registro, así que debemos }
        { desbloquearlo                                                       }
        Check(dbiRelRecordLock(hCur, False));
    finally
      { Liberar la copia del cursor }
      Check(dbiCloseCursor(hCur));
    end;
  end;
end;

// Saludos
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Registro bloqueado? Jonnathan Conexión con bases de datos 3 21-03-2008 00:41:28
funcion para saber los dias que hay entre dos fechas estebanx Varios 5 19-04-2006 23:01:51
Como Saber Si Una Tabla Esta Bloqueado En Modo Escritura RMHTECTH Tablas planas 1 18-10-2004 19:13:00
Saber si un registro está bloqueado en el servidor Muten Firebird e Interbase 1 14-10-2003 14:50:55
Saber Registro Bloqueado Con Ado FernanGil Conexión con bases de datos 1 19-09-2003 17:48:15


La franja horaria es GMT +2. Ahora son las 12:11:34.


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
Copyright 1996-2007 Club Delphi