如何通过ado不读取table的数据而获得该table所有字段的属性?
包括字段名、类型等等。
最好是数据库无关的。

解决方案 »

  1.   

    不读取table的数据而获得该table所有字段的属性?
    ……
    晕!
      

  2.   

    我看到adoconnection中的getfieldnames是通过openschema实现的。
      

  3.   

    for i:=1 to table.fieldcount-1 do
       showmessage(table.fields[i].fieldname);
      

  4.   

    sqlserver 2000。不要读系统表。
      

  5.   

    //***********************************************
    //****查找一个表的所有列
    //****结果返回TStringList
    //***********************************************
    function TdataRelationPub.GetAllCol(sTableName:string):TStringList;
    var
      i:integer;
    begin
      with TADOTable.Create(nil)do
           try
                Connection := SystemDM.DbMain;
                TableName := sTableName;
                Open;
                Result:=TStringList.Create;
                GetFieldNames(Result);
                free;
           except
                on E: Exception do
                     begin
                     ShowMessage(E.Message);
                     Free;
                     end;
            end;end;
    如果不想连接表的话,可以使用系统表。
      

  6.   

    大家没理解我的意思,就是不能open表。
      

  7.   

    for i:=1 to table.fieldcount-1 do
       showmessage(table.fields[i].fieldname);
    同意,这样能够取得字段名,但是其他属性,什么意思?
    请指教!~~~
    你还要想取得什么属性呢 ?
      

  8.   

    //看看数据表的属性
    select * from syscolumns where id=object_id('tablename')
      

  9.   

    用ADO的原生代码可以解决这个问题。你可以在import activex中装入ado的一个扩展功能。
    然后用原其产生的LIB文件来对数据库表进行操作.
      

  10.   

    不能open 表????
    又不能直接读系统表?
    你可以用sp_help table_name,但是他的实现方法也是通过读系统表阿!所以,还是不太懂你的意思.......
    要不借用sql-dmo
      

  11.   

    你可以用sql-dmo中的table对象中的columns集合访问得到。
      

  12.   

    charlish(刘金胜) 同志,能讲得详细点吗?
      

  13.   

    比如说可以使用adoconnection的getfieldnames方法得到某一个表的所有字段名。
    我看了相应的源代码是通过openschema实现的。
    如果我要得到所有字段类型怎么做?怎么通过ado实现?