即在VB中有一个树型视图与一个列表视图或一个其他控件(用来装载表的数据).点击树型视图后展开后再点击表名时,将SQL2000中所对应的表的数据导入到列表视图中或其他控件中(就好像在SQL中使用select * from tablename的效果一样).

解决方案 »

  1.   

    可以用ADO+TreeView+MSHFlexGrid来做首先获得SQL中的每个数据库,然后获取每个数据库的表(从sysobjects表获得)
      

  2.   

    利用SQLMDO 得到指定SQL服务器所有数据库的列表('必须安装SQL SERVER 2000 SP2 或以上版本)得到指定SQL服务器所有数据库的列表:
            '得到指定SQL服务器所有数据库的列表
            Dim sqlApp As New SQLDMO.Application()
            Dim oServer As New SQLDMO.SQLServer()
            oServer.Connect("(local)", "sa", "sa")        cbDatabase.Items.Clear()
            Dim db As SQLDMO.Database
            For Each db In oServer.Databases
                Me.cbDatabase.Items.Add(db.Name)
            Next得到所有的表:
            Dim I As Short
            Dim oServer As New SQLDMO.SQLServer()
            oServer.Connect("(local)", "sa", "sa")
            Dim db As New SQLDMO.Database()        For I = 1 To oServer.Databases.Count
                If oServer.Databases.Item(I, "dbo").Name = "Northwind" Then Exit For
            Next
            If I > oServer.Databases.Count Then Exit Sub        db = oServer.Databases.Item(I, "dbo")        ListBox1.Items.Clear()
        
            '得到所有的表
            For I = 1 To db.Tables.Count
                ListBox1.Items.Add(db.Tables.Item(I, "dbo").Name)
            Next
      

  3.   

    谢谢,但我要求的效果就好像SQL 2000查询分析器左边的导向一样的。可以做到吗?
      

  4.   

    當然可以了。先得到表名,然後加載到Treeview,
    在樹節點的單擊事件中,
    根據表名加載數據,放到右邊顯示。推薦:
    ADO+Treeview+ListView的報表式。
      

  5.   

    还是用ADO+TreeView+MSHFlexGrid做好。
      

  6.   

    '得到某个数据库的所有用户表和系统表
    '引用ADO("工程"/"引用"/Microsoft ActiveX Data Objects 2.X Library)
    Private Sub Command1_Click()
        Dim cn As New ADODB.Connection, rs As New ADODB.Recordset    cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登陆用户名;Password=登录密码;Initial Catalog=数据库名;Data Source=服务器别名"
        cn.CursorLocation = adUseClient '设置客户端游标
        cn.Open
        '查询出所有的用户表
        Set rs = cn.Execute("select [name] from sysobjects where [xtype]='U' and [name]<>'dtproperties'")
        If Not rs.EOF Then rs.MoveFirst
        whlie Not rs.EOF
            Debug.Print rs(0)  '打印所有的用户表名
            rs.MoveNext
        Wend
        
        '查询出所有的系统表
        Set rs = cn.Execute("select [name] from sysobjects where [xtype]='S' or ([name]='dtproperties')")
        If Not rs.EOF Then rs.MoveFirst
        whlie Not rs.EOF
            Debug.Print rs(0)  '打印所有的用户表名
            rs.MoveNext
        Wend
    End Sub