Mega Code Archive

 
Categories / Delphi / ADO Database
 

Pack PARADOX

Title: Pack PARADOX Question: Pack a PARADOX Table Answer: procedure 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 reestructuracin } Table.Close; { LLamar a DbiDoRestructure... } Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False)); end else raise EDatabaseError.Create('La Tabla solo puede ser PARADOX dBASE' + ' Tipo de PACK'); Table.Active := false; Table.Exclusive := false; Table.Open; end;