如何区分是用户自己建立的表还是系统表?

解决方案 »

  1.   

    SELECT *
    FROM sysobjects
    WHERE (type = 'U')
      

  2.   

    用adoconnection控件
    adocoonnection有一个方法,好像是
    .tablename
    你看一下就知道了,肯定行的
      

  3.   

    procedure TMainForm.GetDBTableSchema(ADataBase: String);
    var
      ads: TADODataSet;
    begin
      TableComboBox.Items.Clear;
    // Get table list.
      ads := TADODataSet.Create(Self);
      try
        MyADOConnection.DefaultDatabase := ADataBase;
        MyADOConnection.OpenSchema(siTables,
          VarArrayOf([Unassigned, Unassigned, Unassigned, 'TABLE']),
          EmptyParam, ads);
        while not ads.Eof do
        begin
          TableComboBox.Items.Add(ads.FieldByName('TABLE_NAME').AsString);
          ads.Next;
        end;
        if TableComboBox.Items.Count > 1 then TableComboBox.ItemIndex := 0;
      finally
        ads.Free;
      end;
    end;这样可以得到用户表,系统表的获取应该是修改 OpenSchema 的参数中的某一个。可以找帮助看看。
      

  4.   

    try
        with query do
          begin
            close;
            sql.Clear;
            sql.Add('sp_tables');
            execsql;
          end;
      except
         showmessage('Êý¾Ý¿âÁ¬½Óʧ°Ü!');
         exit;
      end;
      TableList.Items.Add(query.Fieldbyname('table_name').AsString);