SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: kekal en Martes 18 de Enero de 2005, 17:00

Título: Borrado De Registros
Publicado por: kekal en Martes 18 de Enero de 2005, 17:00
hola, resulta que tengo una tabla
donde en determinado momento de la aplicación borra un/os registros de una tabla, la tabla en cuestion es de dbase (.dbf), y tiene un borrado lógico y otro físico
el lógico marca los registros como borrados, el físico los borra del archivo
resulta que a la hora de de borrar
ya sea con...
Código: Text
  1.  
  2. tabla->Delete();
  3.  
  4.  
o con un query...
Código: Text
  1.  
  2. qtabla->Active=false;
  3. qtabla->SQL->Clear();
  4. qtabla->SQL->ADD("delete * from tabla where valor=-1");
  5. qtabla->Active=false;
  6.  
  7.  

lo que hacen es un borrado lógico, lo que quiero es borrado físico dado que las tablas de trabajo crecen muchisimo por los registros borrados

si alguien tiene alguna idea
Gracias
Título: Re: Borrado De Registros
Publicado por: Fermin en Lunes 24 de Enero de 2005, 20:35
HOla Kekal:

Espero que este código te sirva. Realiza el borrado físico de una tabla dbase:

 :comp:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   DBIResult        rslt;
   CURProps       CurProps;
   hDBIDb           hTmpDb;
   hDBICur hTmpCur;

   Table1->Active = true;
   Check(DbiGetCursorProps(Table1->Handle, CurProps));
   if (strcmp(CurProps.szTableType, szDBASE) == 0)
      {
        Check(DbiPackTable(Table1->DBHandle,Table1->Handle,NULL,szDBASE, TRUE));
      }
  Table1->Open();
}
//---------------------------------------------------------------------------