Ver Mensaje Individual
  #29  
Antiguo 13-02-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Esta es la solución que he econtrado utilizando una función que no recuerdo ni de donde saqué, se trata de disvincular los índices, así la tabla se puede abrir desde Delphi, obviamente habría que guardar la cabecera antigua para una vez acabada la conexión restaurarla, ese código lo dejo para vosotros.



Código:
procedure MnuDelAllMDX(fname : string);
type
 THeader = record
            ID,y,m,d     : byte;
            recs         : longint;
            hdsize,rsize : word;
            dummy        : array[1..20] of byte;
          end;
Var
  hDBF  : integer;
  Header: THeader;
begin
if MessageDlg('¿Esta seguro de que desea eliminar todos los indices?', mtConfirmation , [mbYes, mbNo],0)=mrYes then
 begin
  DeleteFile(ChangeFileExt(fname,'.mdx'));
  hDBF  := FileOpen( fname, fmOpenReadWrite or fmShareDenyNone);
  FileRead( hDBF, Header, SizeOf(Header) );
  Header.dummy[17] := 0;  // no index
  FileSeek(hDBF, 0,0);
  FileWrite(hDBF, Header, SizeOf(Header) );
  FileClose(hDBF);
 end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
MnuDelAllMDX('Articulo.dbf');
end;
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