我要使用ADOconnection连接查询了一个ACCESS数据库后,ADOconnection有一个方法来把数据库中所含有的表的表名来传递给Tlistbox或者TCombobox给列出来,(我以前试过的确实可以,是在网上下载的一个例程里看到的,那个例程的名字倒是记得,就是“使用ADO随意访问ACCESS”),甚至DEMO都可以,可是现在又忘记怎么把这表名在listbox里列出来了,谁能告诉我,谢谢了。

解决方案 »

  1.   

    列出表名
    SELECT MSysObjects.Name, MSysObjects.TypeFROM MSysObjectsWHERE (((MSysObjects.Name) Not Like "msys*") AND ((MSysObjects.Type)=1));
      

  2.   

    var
      I: Integer;
    begin
      for I := 0 to 记录数-1 do 
        Memo1.Lines.Values[Chr(I)] := ADODATASET1.FieldValues['表名']
      

  3.   

    學習~
    好像跟sql server 中差不多吧,也是存在一個系統表裡
      

  4.   

    我记得好象只有一句代码,而且我用的是ADOQuery.
      

  5.   

    var
      strs :TStrings;
    begin
      strs := TStringList.Create;
      ADOConnection1.GetTableNames(strs);
      ListBox1.Items := strs;
    end;
      

  6.   

    procedure TADOConnection.GetTableNames(List: TStrings;
      SystemTables: Boolean);
    var
      TypeField,
      NameField: TField;
      TableType: string;
      DataSet: TADODataSet;
    begin
      CheckActive;
      DataSet := TADODataSet.Create(nil);
      try
        OpenSchema(siTables, EmptyParam, EmptyParam, DataSet);
        TypeField := DataSet.FieldByName('TABLE_TYPE'); { do not localize }
        NameField := DataSet.FieldByName('TABLE_NAME'); { do not localize }
        List.BeginUpdate;
        try
          List.Clear;
          while not DataSet.EOF do
          begin
            TableType := TypeField.AsString;
            if (TableType = 'TABLE') or (TableType = 'VIEW') or     { do not localize }
               (SystemTables and (TableType = 'SYSTEM TABLE')) then { do not localize }
              List.Add(NameField.AsString);
            DataSet.Next;
          end;
        finally
          List.EndUpdate;
        end;
      finally
        DataSet.Free;
      end;
    end;
    第二个参数是否列出系统表.
    代码看楼上的