如果是SqlServer可以这样判断:
LSql := 'select name from sysobject 
where Name in (''TableName1'',''TableName1'',''TableName1''...) and type = ''U'' '
如果查询结果为空,则没有BDE方式
database=master;user=sa
Database.Connected:=True; 一个TQUERY
query.sql.clear;
query.Sql.Add('select * from sysdatabases where name=''数据库名''');
query.Open;
if query.Recordcount>0 then showmessage('database exists');query.sql.clear
query.sql.add('select * from sysobjects where name in (''表名'',...) and type='U');
query.open;
ADO方式差不多
var
t:TStrings;t:=TStringList.Creat;ADOConnection.GetTabnames(t,True);
if t.IndexOf('向判断的表')=0 then
showmessage('表不存在!');

解决方案 »

  1.   

    列如查有没有abc库,然后查abc库中有没有cba表
    query1先设置为连接master库,query2设置为连接abc库
    with query1 do
    begin
      if active then close;
      sql.clear;
      sql.add('select count(*) as F01 from sysdatabases where name=abc');
      open;
      if fieldbyname('F01').asinteger<>0 then
      begin
        //...
      end;
    end;with query2 do
    begin
      if active then close;
      sql.clear;
      sql.add('select count(*) as F01 from sysobjects where name=cba');
      open;
      if fieldbyname('F01').asinteger<>0 then
      begin
        //...
      end;
    end;