Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Hacer un borrado físico a una tabla, Paradox ó DBase - Delphi
Lenguaje de programación Borland Delphi


Las úcicas tablas que se les puede hacer borrado físico de Datos son PARADOX y dBASE. Esto se hace a través de las funciones BDE de la API. A continuación se muestra un ejemplo de como usarlas en ambos tipos de tablas.


procedure Txxxx.PackTable(Table: TTable);
var
    Props: CURProps;
    hDb: hDBIDb;
    TableDesc: CRTblDesc;
begin
  Table.Active := false;
  Table.Exclusive := true;
  Table.Active := true;
  { Asegurese que la Tabla este abierta en modo exclusivo }
  if not Table.Active then
   raise EDatabaseError.Create('La Tabla debe estar abierta');
  if not Table.Exclusive then
   raise EDatabaseError.Create('La Tabla tiene que estar abierta en modo exclusivo');
  { Averiguar el tipo de Tabla (PARADOX , dBASE) }
  Check(DbiGetCursorProps(Table.Handle, Props));
  {Si la Tabla es Paradox, solo llamar a DbiDoRestructure...}
  if Props.szTableType = szPARADOX then 
    begin
       { Limpiar la estructura }
       FillChar(TableDesc, sizeof(TableDesc), 0);
      { Obtener el Handle del Database desde el Handle de la Tabla }
      Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE,hDBIObj(hDb)));
      { Poner el nombre de la Tabla en el Descriptor de la Tabla}
      StrPCopy(TableDesc.szTblName, Table.TableName);
      {Poner el tipo de la Tabla en el Descriptor }
      StrPCopy(TableDesc.szTblType, Props.szTableType);
      {Poner TRUE en la Opcion pack del Descriptor}
      TableDesc.bPack := True;
      { Cerrar la Tabla para que se complete la reestructuración }
      Table.Close;
      { LLamar a DbiDoRestructure... }
      Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
   end
     else
         { si la tabla es dBASE simplemente llame a DbiPackTable...
      if (Props.szTableType = szDBASE) then
       Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
      else
        raise EDatabaseError.Create('La Tabla solo puede ser PARADOX ó dBASE' + ' Tipo de PACK');
  Table.Active := false;
  Table.Exclusive := false;
  Table.Open;
end;




Publicado el: 2003-09-11

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A