또 한가지 질문을 올립니다.
제가 임시 테이블이 필요하여 소스 내에서 동적으로 테이블을 생성하였습니다.
생성한 테이블을 사용후 삭제 하여고 하니 Table is Busy에러가 발생 합니다.
도대체 이유가 무얼까요?
아래는 사용 예 입니다.
// 테이블 동적 생성
tbl := TTable.Create(Application);
with tbl do
begin
Exclusive := False;
Active := False;
DatabaseName := DBName;
TableName := TblName;
TableType := TblType;
FieldDefs.Clear;
FieldDefs.Add('INMONTH', ftString, 10, False);
FieldDefs.Add('BCODE', ftString, 20, False);
FieldDefs.Add('SCODE', ftString, 20, False);
FieldDefs.Add('INPRICE', ftInteger, 0, False);
FieldDefs.Add('OUTPRICE', ftInteger, 0, False);
IndexDefs.Clear;
IndexDefs.Add('', 'INMONTH;BCODE;SCODE', [ixPrimary, ixUnique]);
CreateTable;
Free;
end;
// 생성 테이블 열고 데이터 추가
with Form1.Query1 do
begin
Close;
Form1.DataSource1.DataSet := Form1.Query1;
DataBaseName := Trim(gcTempDir);
SQL.Clear;
sSql := ' Select * From TEST1.DB where INMONTH = '2002-05-22';
SQL.Add(sSql);
ExecSQL;
Open;
First;
SQL.Clear;
sSql := ' Select * From TEST1.DB ';
SQL.Add(sSql);
ExecSQL;
Form1.DataSource1.DataSet := Nil;
Active := False;
end;
// 사용한 테이블 삭제
with Form1.Query1 do
begin
SQL.Clear;
Close;
Form1.DataSource1.DataSet := Nil;
SQL.Clear;
SQL.Add('drop table ''TEST1.DB''');
ExecSQL;
end;
end;