如题!!!!!!!!!!!!!

解决方案 »

  1.   

    for i:=0 to adotable.fields.count-1 do
      adotable.fields[i]....不知系统表中有没有。
      

  2.   

    放一ADOConnection,再放一ListBoxprocedure TForm1.BitBtn1Click(Sender: TObject);
    var
      fnlist: TStrings; i: Integer;
    begin
      ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=c:\test.mdb;Persist Security Info=False';
      AdOConnection1.Active;
      fnlist := TStringList.Create;
      adoconnection1.GetFieldNames('tb_test',fnlist);
      for i := 0 to fnlist.Count - 1 do
        listbox1.AddItem(fnlist.Strings[i],fnlist);
      fnlist.Free;
    end;
      

  3.   

    经典代码,别人给的:http://expert.csdn.net/Expert/topic/2885/2885163.xml?temp=.1103327  我的问题:
      代码:const
      SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
        + 'Jet OLEDB:Database Password=%s;';implementation
    {$R *.dfm}
    //=============================================================================
    // Procedure: GetTempPathFileName
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: (None)
    // Result   : string
    //=============================================================================function GetTempPathFileName(): string;
    //取得临时文件名
    var
      SPath, SFile: array[0..254] of char;
    begin
      GetTempPath(254, SPath);
      GetTempFileName(SPath, '~SM', 0, SFile);
      result := SFile;
      DeleteFile(result);
    end;//=============================================================================
    // Procedure: CreateAccessFile
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: FileName:String;PassWord:string=''
    // Result   : boolean
    //=============================================================================function CreateAccessFile(FileName: string; PassWord: string = ''): boolean;
    //建立Access文件,如果文件存在则失败var
      STempFileName: string;
      vCatalog: OleVariant;
    begin
      STempFileName := GetTempPathFileName;
      try
        vCatalog := CreateOleObject('ADOX.Catalog');
        vCatalog.Create(format(SConnectionString, [STempFileName, PassWord]));
        result := CopyFile(PChar(STempFileName), PChar(FileName), True);
        DeleteFile(STempFileName);
      except
        result := false;
      end;
    end;//=============================================================================
    // Procedure: CompactDatabase
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: AFileName,APassWord:string
    // Result   : boolean
    //=============================================================================function CompactDatabase(AFileName, APassWord: string): boolean;
    //压缩与修复数据库,覆盖源文件var
      STempFileName: string;
      vJE: OleVariant;
    begin
      STempFileName := GetTempPathFileName;
      try
        vJE := CreateOleObject('JRO.JetEngine');
        vJE.CompactDatabase(format(SConnectionString, [AFileName, APassWord]),
          format(SConnectionString, [STempFileName, APassWord]));
        result := CopyFile(PChar(STempFileName), PChar(AFileName), false);
        DeleteFile(STempFileName);
      except
        result := false;
      end;
    end;
      

  4.   

    //创建ACCESS2000数据库
      function CreateAssess2000Database(const DatabaseName : string) : Boolean;
      var
        Cat:OleVariant;
      begin
        Cat:=CreateOleObject('ADOX.Catalog');
        Cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DatabaseName);
      end;
      

  5.   

    谢谢,我已找到了解决的办法,建立数据库的方法就像上面那段经典代码一样,遍历表中字段也好办adoquery.fielddefs.count和adoquery.fielddef[index].size   .name   .datatype等。
         但是现在又碰到了新问题,就是我在遍SQLSERVER中数据库中的用户表时,使用了语句:
    'select name from sysobjects where xtype='U' and status>=0,这条语句在SQLSERVER的查询分析器中使用正常,但是在程序中确无法查询到用户,是不是权限的问题,,请教哪位大侠能已指点,如果是权限的问题,怎样在程序中改变数据库的权限???
      

  6.   

    你的语句单引号的加多个,在执行前看一下,是不是正确的sql