Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2006
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
pack de fichero dbf

Hola listeros:

Tengo el siguiente problema que trabajando un fichero dbf cuando borro los registros en realidad lo que hago es marcarlos pero cuando se abren con foxpro hay estan. Busque en Trucomania el truco 96 pero cuando lo ejecuto me da el siguiente error 'capability not supported' alguien me puede echar una mano

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer
Responder Con Cita
  #2  
Antiguo 03-04-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Porque no pones el código que estás utilizando, ya que el truco que mencionas habla de tablas Dbf y tablas Paradox, puede ser que con las de Fox no funcione.

En cualquier caso recuerda que requiere el uso exclusivo de la tabla que se está compactando.

Si realmente no funciona con Fox, una solución sería crear una tabla exactamente igual vacía, transferirle los registros, eliminar la original, renombrar la que ahora solo contiene los registros no marcados para borrar.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 03-04-2006
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
pack de fichero dbf

Marcos gracias por la respuesta. En el programa que hice tuve que usar la solucion que me dijiste en la parte final de tu respuestas pero en este caso solo se trata de cuando uno va a eliminar un registro tratando de mantener el fichero original, de todas maneras voy a intentar lo que dices porque la vez anterior no tuve otra alternativa y estube fajado varios dias. Te muestro parte del codigo a ver si aprecias algo nuevo
Código:
procedure PackDBF(Tabla: TTable);
begin
  Check(DbiPackTable(Tabla.DBHandle, Tabla.Handle, nil, szDBASE, True))
end;
procedure TFormCorrecionCadeca.FormActivate(Sender: TObject);
begin
  DataModule1.Cadeca.TableName:= nomcadeca;
  DataModule1.Cadeca.Exclusive:= True;
  DataModule1.Cadeca.Open;
  ButtonGuardar.Enabled:= False;
end;
 
procedure TFormCorrecionCadeca.DSCadecaDataChange(Sender: TObject;
  Field: TField);
begin
  ButtonGuardar.Enabled:= DataModule1.Cadeca.State in dsEditModes;
end;
procedure TFormCorrecionCadeca.ButtonGuardarClick(Sender: TObject);
begin
  DataModule1.Cadeca.Post;
  ButtonGuardar.Enabled:= False;
end;
procedure TFormCorrecionCadeca.ButtonSalirClick(Sender: TObject);
begin
  PackDBF(DataModule1.Cadeca);
  DataModule1.Cadeca.Close;
  Close;
end;
Responder Con Cita
  #4  
Antiguo 04-04-2006
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
solucion al pack de fichero dbf

Utilizando el truco 96 de trucomania se logro resolver el problema pero el detalles estaba en que al cerrar el formulario primero hay que cerrar la tabla y luego hacer el Pack y ademas hay que pasar en el nombre del fichero la extension del mismo (.dbf)

Asi fue como lo pudimos lograr, quizas a alguien le pueda servir
Código:
procedure PackDBF(Const ADatabase, ATable : String);
begin
  with TTable.Create(nil) do
  try
    DatabaseName := ADataBase;
    TableName := ATable;
    TableType := ttFoxPro;
    Exclusive := True;
    Open;
    Check(DbiPackTable(Database.Handle,Handle,'','',True));
  finally
   Free;
  end;
end;
procedure TFormCorrecionCadeca.FormActivate(Sender: TObject);
begin
  DataModule1.Cadeca.TableName:= nomcadeca;
  DataModule1.Cadeca.Open;
  ButtonGuardar.Enabled:= False;
end;
 
procedure TFormCorrecionCadeca.DSCadecaDataChange(Sender: TObject;
  Field: TField);
begin
  ButtonGuardar.Enabled:= DataModule1.Cadeca.State in dsEditModes;
end;
procedure TFormCorrecionCadeca.ButtonGuardarClick(Sender: TObject);
begin
  DataModule1.Cadeca.Post;
  ButtonGuardar.Enabled:= False;
end;
 
procedure TFormCorrecionCadeca.ButtonSalirClick(Sender: TObject);
begin
  DataModule1.Cadeca.Close;
  PackDBF('',nomcadeca + '.dbf');
  Close;
end;
Responder Con Cita
Respuesta


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
Update pack delphi 6? AbcXxx Varios 7 27-09-2010 21:11:53
Sobre Delphi Pack 2.0 TDworD DelphiPACK 0 25-11-2004 09:02:10
delphi pack chona DelphiPACK 4 14-07-2004 09:45:35
Pack de chistes :) guillotmarc Humor 0 31-03-2004 18:05:35
problemas con Export pack y win 98 cuxoapat Impresión 1 20-05-2003 09:56:47


La franja horaria es GMT +2. Ahora son las 02:02:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi