Ошибка Paradox в CreateTable

Я создавал таблицу во время выполнения, однако при создании таблицы (см. Мой код)


procedure CreateTempTable(pDataBaseName,pSessionName:String);
begin
  //-------create "TempTable" 
  TempTable:=TTable.Create(application);
  With TempTable Do
  begin
    //-------set false in "Active"
    Active := False;
    //-------name of Session
    SessionName:=pSessionName;
    //-------name of DataBase.
    DatabaseName :=pDataBaseName;
    Filtered := True;
    //-------name of table
    TableName := 'TempTabl.DB';
    //-------paradox type
    TableType := ttParadox;
    //-------if the table is already exists
    if TempTable.Exists then
      //-------delete the table
      TempTable.DeleteTable;
    //-------create 2 fields "Field1" & "Field2"
    with FieldDefs do
    begin
      Clear;
      with AddFieldDef do
      begin
        DataType := ftFloat;
        Name := 'Field1';
      end;
      with AddFieldDef do
      begin
        DataType := ftFloat;
        Name:='Field2';
      end;
    end;

    //-------Create table
    CreateTable;  // Here where the exception bursts off
  end;
end;

возникает исключение: «Таблица открыта, таблица не существует». так в чем именно проблема, она открыта или не существует?

Это исключение: введите описание изображения здесь


person Zeina    schedule 30.01.2013    source источник
comment
Поскольку вы имеете дело с такими старыми вещами, вы пробовали код с коротким и простым путем, например C:\Temp? Посмотрите, имеет ли это значение.   -  person Cosmin Prund    schedule 30.01.2013
comment
Это таблица парадокса; он открыт и не существует. ;-)   -  person Ondrej Kelle    schedule 30.01.2013
comment
Мой ответ мог бы вам помочь?   -  person moskito-x    schedule 01.02.2013
comment
Спасибо, лучше поздно, чем никогда.   -  person moskito-x    schedule 02.02.2013


Ответы (1)


(внутри With TempTable Do) Нет необходимости удалять TempTabl.DB явное. Все равно перезаписывается на CreateTable.

Чтобы проверить, не используется ли таблица другими компонентами в среде IDE, вы можете попробовать удалить файл TempTabl.DB.

CreateTempTable теперь является функцией CreateTempTable (pDataBaseName, pSessionName: String): Boolean;
Таким образом, вы можете лучше обрабатывать ошибки.

Протестировано с помощью delphi 5 и RAD Studio 2007.

function CreateTempTable(pDataBaseName,pSessionName:String):Boolean;
begin
result:=false;
// assume pDataBaseName=directory, or change it 
if FileExists(pDataBaseName+'TempTabl.DB') then begin
   if NOT DeleteFile(pDataBaseName+'TempTabl.DB') then begin
      showMessage('Table opened by another part of the IDE');
      exit;
   end;
end;

TempTable:=TTable.Create(application);
With TempTable Do
begin
Active := False;
SessionName:=pSessionName;
DatabaseName :=pDataBaseName;
//Filtered := True;
TableName := 'TempTabl.DB';
TableType := ttParadox;
with FieldDefs do
begin
  Clear;
  with AddFieldDef do
  begin
    DataType := ftFloat;
    Name := 'Field1';
  end;
  with AddFieldDef do
  begin
    DataType := ftFloat;
    Name:='Field2';
  end;
end;
CreateTable;
result:=true;
end;
end;
person moskito-x    schedule 31.01.2013