老兄,这不是解决的办法吧,我是要判断一个表的存在呀,在BDE中可以通过SESSION的GETTABLENAMES得到所有表名,再来判断是否存在的表名,但ADO好像不能用SESSION,我是这样的意思呀!!!!

解决方案 »

  1.   

    adoconnection1.gettablenames(tlist)
    flag=0;
    for i:=0 to tlist.coun-1 do
     begin
       if tlist.strings[i]=tablename then 
          flag=1; 
     end;
    if flag=0 then
     begin
      adoquery1.close;
      adoquery1.sql.clear;
      adoqery1.sql.add('create table tablename ()');
     end;
      adoquery1.execsql;
      

  2.   

    使用adoconnection的openschema方法,如果你有msdn,在msdn上有这个方法的示例代码。
      

  3.   

    var
      vStringList: TStringList;
      vTableName: string;
    begin
      vTableName := '<你的表名,注意大小写>';
      vStringList := TStringList.Create;
      try
        ADOConnection1.GetTableNames(vStringList);
        if vStringList.IndexOf(vTableName) >= 0 then
          ShowMessage(vTableName + ' 已经存在');
      finally
        vStringList.Free;
      end;
    end;