RT 谢谢!

解决方案 »

  1.   

    var
    i:integer;
    begin
    Table1.Active := False;
    Table1.Exclusive := True;
    Table1.IndexDefs.Update;
    for i:=0 to Table1.IndexDefs.Count-1 do
    begin
     if ixPrimary in Table1.IndexDefs[i].Options then
      begin
       Memo1.Lines.Add('主键名称:'+Table1.indexDefs[0].Name);
       Memo1.Lines.Add('主键字段:'+Table1.IndexDefs[0].Fields );
     end;
    end;
    end;
      

  2.   

    ADO有封装这个吗?读系统表不知道行不行
      

  3.   

    kkgogo(kkgogo) 不行呀,那位大侠做过呀?
      

  4.   

    select a.name 主键名称
    FROM syscolumns a inner join sysobjects d 
    on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties' 
    inner join sysobjects b on b.xtype='PK' and b.parent_obj = a.id 
    and b.name in(SELECT name FROM sysindexes WHERE indid in(
    SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
    ))
    where d.name = 'jobs'  --此处jobs替换为待查表名
      

  5.   

    楼主这个是SqlServer数据库的,用的就是读系统表的方法
    如果是其它数据库如果有系统表也就好办了,只要知道系统表的结构就行了
      

  6.   

    打错了,是楼上meiqingsong(阿飛) ,不是楼主
    :)
      

  7.   

    function TForm1.getprimarykey(Adotable: Tadotable): string;
    var
      i:integer;
    begin
      Adotable.IndexDefs.Update;
      for i:=0 to Adotable.IndexDefs.Count-1 do
        if ixprimary in Adotable.IndexDefs[i].Options then
          Result := Adotable.IndexDefs[0].Fields
        else
          Result := '';
    end;
    问题已解决,以上是我测试过的代码!