// Создание DBF-файла во время работы приложения
...
const
CreateTab = 'CREATE TABLE ';
IDXTab = 'PRIMARY KEY ';
MyTabStruct =
'IDX_TAB DECIMAL(6,0), ' +
'DATE_ DATE, ' +
'FLD_1 CHARACTER(20), ' +
'FLD_2 DECIMAL(7,2), ' +
'FLD_3 BOOLEAN, ' +
'FLD_4 BLOB(1,1), ' +
'FLD_5 BLOB(1,2), ' +
'FLD_6 BLOB(1,3), ' +
'FLD_7 BLOB(1,4), ' +
'FLD_8 BLOB(1,5) ';
...
// создание таблицы без индекса
procedure TForm1.Button1Click(Sender: TObject);
begin
if CreateTable('"MYTAB.DBF"', MyTabStruct, '') then
...
// выполняем дальнейшие операции
else
...
end;
// создание таблицы с индексом
procedure TForm1.Button2Click(Sender: TObject);
begin
if CreateTable('"MYTAB.DBF"', MyTabStruct, IDXTab + ' (IDX_TAB)') then
...
// выполняем дальнейшие операции
else
...
end;
function TForm1.CreateTable(TabName, TabStruct, TabIDX: string): boolean;
var
qyTable: TQuery;
begin
result := true;
qyTable := TQuery.Create(Self);
with qyTable do
try
try
SQL.Clear;
SQL.Add(CreateTab + TabName + '(' + TabStruct + TabIDX + ')');
Prepare;
// ExecSQL, а не Open. Иначе ... облом
ExecSQL;
except
// Обработка ошибок открытия таблицы Возможности обработчика можно расширить.
Exception.Create('Ошибка открытия таблицы');
result := false;
end;
finally
Close;
end;
end;
|