在Delphi编写的程序中,如何判断Access数据库中是否存在一张指定的表?如果这个问题解决了,我将总结一下我学Access的经验。/踢踏
踢踏 2002-01-24 10:09:37 给定数据集、一个数据库的路径和表名,如果数据库不存在,则建立数据库。如果表不存在,则删除,重新建立一张表。这张表根据传入的数据集建立。现在的问题是如何判断这张表是否存在。以下是我的办法:
procedure TFShowProc.ExportAccess(const pDataSet: TAdoQuery; tFileType: T_FILETYPE;
sPathNameStr,sTableName: String);
var
cat: OleVariant;
StrTemp: String;
i,j: Integer;
aQuery: TADOQuery;
begin
//如果不存在这个数据库文件,则建立这个数据库文件
if not FileExists(sPathNameStr) then
begin
cat := CreateOleObject('ADOX.Catalog');
cat.Create(Format(AdoString,[sPathNameStr]));
end;
aQuery:=TADOQuery.Create(nil);
try
aQuery.ConnectionString := Format(AdoString,[sPathNameStr]);
with aQuery do
try
Close;
//表名相同而表结构不同很难识别,故把以前的表相删除,然后重建指定的表
Sql.Clear;
Sql.Add('select * from '+sTableName+' where 1=0');
Active:=true;
close;
Sql.Clear;
Sql.Add('DROP TABLE '+sTableName);
ExecSql;
finally
StrTemp:=GetDataType(pDataSet,tFileType);//得到数据类型
Close;
Sql.Clear;
SQL.Add('CREATE TABLE '+sTableName+' ('+StrTemp+' )');
ExecSql; //如果指定的表不存在,则这儿出错“Exception EOleException in module EXPORT.DLL at 000714B7” ,EXPORT.DLL是这段程序所在的名称。
close;
Sql.Clear;
Sql.Add('select * from '+sTableName+' where 1=0');
Active:=true;
end;
.
.
.
finally
aQuery.Free;
end;
end;
谁有好的方法??