我在执行期间创建了表,但是在创建表时(参见我的代码)
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;
引发异常,即:“表打开,表不存在”。 那究竟是什么问题,是开放还是不存在?
这是例外:
答案 0 :(得分:2)
(在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;