Delphi - Como borro el record deuna dbf ???

 
Vista:

Como borro el record deuna dbf ???

Publicado por Ismael (136 intervenciones) el 04/04/2003 12:03:54
como logro borrar el registro de una dbf, o es que no se puede hacer eso....
tengo el Database Desktop y ahi checo mis datos que guardo con mi aplicacion, y si yo di de alta a 15 registros:
1 ....a
2 ....b
.
.
15...p
y si borro los 14 primeros, me tendria que quedar:
1...p, pero sin embargo me queda:
15...p... es decir, que estoy dejando libre 14 espacios, o como me explican esto, espero me entiendan.....
y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como borro el record deuna dbf ???

Publicado por BigLuis (463 intervenciones) el 04/04/2003 18:17:33
Cuando borras registros en una tabla DBF no se borran fisicamente sino que se marcan para borrado. Para eliminarlos fisicamente tienes que hacer un Pack. Mira en la ayuda del BDE que existe una funcion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como borro el record deuna dbf ???

Publicado por BigLuis (463 intervenciones) el 04/04/2003 21:07:55
Despues de contestarte pensé que es un poco complicado si no has tocado nunca funciones del BDE por eso te mando estos dos procedimientosd que "comprimen"=limpian las tablas DBF y DB
implementation
Uses DBIProcs, DBITypes, DBIErrs;
{$R *.DFM}

procedure TFormPack.PackDBFTable(const ADatabaseName, ATableName: string);
begin
with TTable.Create(Self) do
try
DatabaseName := ADatabaseName;
TableName := ATableName;
Exclusive := True;
Open;
if DbiPackTable(Session.FindDatabase(ADatabaseName).Handle,
Handle, '', '', True) <> DBIERR_NONE then
raise EDatabaseError.Create('Error en compresión');
finally
Free;
end;
end;

procedure TFormPack.PackPxTable(const ADatabaseName, ATableName: string);
var
ADB: TDatabase;
PdxStruct: CRTblDesc;
begin
with TTable.Create(Self) do
try
DatabaseName := ADatabaseName;
TableName := ATableName;
Exclusive := True;
Open;
ADB := Session.FindDatabase(ADatabaseName);
ADB.KeepConnection := True;
Close;
FillChar(PdxStruct, SizeOf(PdxStruct), 0);
StrPCopy(PdxStruct.szTblName, ATableName);
PdxStruct.bPack := True;
if DbiDoRestructure(ADB.Handle, 1, @PdxStruct, nil, nil, nil, False)
<> DBIERR_NONE then
raise EDatabaseError.Create('Error en compresión');
ADB.Connected := False;
finally
Free;
end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:gracias..

Publicado por Ismael (136 intervenciones) el 06/04/2003 11:31:34
te agradesco tu ayuda..
atte. Ismael
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar