Buscar

Como sobressair ao erro

Código

Quando tentamos abrir uma tabela dBASE sem o arquivo de índice (.mdx) o delphi gera a seguinte exceção: "Index does not exist...". O mesmo ocorre quando usamos tabelas Paradox. Para abrir a tabela sem o arquivo .mdx é muito simples, você só precisa rescrever o byte 28 para 0 dentro do arquivo .dbf, assim mostra a unit abaixo:

unit Fixit;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;

type

TForm1 = class(TForm)

Table1: TTable;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure RemoveMDXByte(dbFile: String);

end;

 

var
    Form1: TForm1;

implementation

{$R *.DFM}

const`
    TheTableDir = 'c:temp'; //Não esqueça da contra-barra no final
    TheTableName = 'animals.dbf';

procedure TForm1.RemoveMDXByte(dbFile: String);
const
    Value: Byte = 0;
var
    F: File of byte;
begin
AssignFile(F, dbFile);
Reset(F);
Seek(F, 28);
Write(F, Value);
CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
try
Table1.DatabaseName := TheTableDir;
Table1.TableName := TheTableName;
Table1.Open;
except on E:EDBEngineError do
if Pos('Index does not exist', E.Message)>0 then begin
MessageDlg('O índice da tabela não existe. Deseja continuar ?',mtWarning, [mbOk], 0);
RemoveMDXByte(TheTableDir + TheTableName);
PostMessage(Button1.Handle, cn_Command, bn_Clicked, 0);
end;

end;

end;

end.
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 26/04/05
Por: Miguel Machado
Visualizada: 3018 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009