Dim conn As ADODB.Connection
Dim rsHost As ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\VHM.mdb"
Set conn = New ADODB.Connection
Set rsHost = New ADODB.Recordset
rsHost.CursorLocation = adUseClient
rsHost.Open "select * from WebHost", conn, adOpenDynamic, adLockOptimistic
Set DataGridHost.DataSource = rsHost
DataGridHost.Refresh

解决方案 »

  1.   

    直接添加时,你看看DataGridHost默认行数,另外,有没有标题栏,如果有,那么数据应该下移,表格总行数应该为记录总数+1
      

  2.   

    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\VHM.mdb"
    把以上的4.0改为3.5吧。
    就是
    conn.Open "Provider=Microsoft.Jet.OLEDB.3.5;Data Source=" & App.Path & "\VHM.mdb"
    这都是datagrid的错,用低一点的版本的ADO。
      

  3.   

    canic(哈哈) :我用的是Access2000, 按你说的改成“3。5”出错。  错误信息:“未找到提供程序。该程序可能为正确安装“我也知道有可能是Access版本的问题。但是没解决。有没有其他办法。请赐教!
      

  4.   

    happybeyond(衣带渐宽怎不悔,VB消得人憔悴~) :数据库肯定没问题,因为我可以在Text中显示数据。就是无法再DataGrid中显示。请问您用的是Access200吗。我向可能是Access版本的问题。有没有其他办法。谢谢了!
      

  5.   

    谢谢大家的建议。如果用DataGrid解决不了Access版本问题。能否介绍几个相似的,功能强大的Grid控件。 谢谢了!
      

  6.   

    我遇到和你相同的问题,改用 microsoft Flexgrid control 一切搞定。该控件也在部件中找
    用法很相似。
    a: DataGridHost.Col = 1
    b: DataGridHost.Row =1
    c: DataGridHost.Text = "aaa"
    不会报错。
    rows和cols可以随时改。
      

  7.   

    MSHFlexGrid1还可以
    我觉得比DATAGRID要好用些...
      

  8.   

    谢谢了。可是microsoft Flexgrid control 是二维表。不符合我的要求阿。有没有一维表格控件?
      

  9.   

    你的数据库有没有问题
    有什么表?表名是什么?
    你可以换一下表名。不有用user等做表名!
      

  10.   

    mikyxyc(甜蜜) :
    能否说得详细一些,谢谢!
      

  11.   

    a: DataGridHost.Col = 1
    b: DataGridHost.Row =2
    c: DataGridHost.Text = "aaa"
      

  12.   

    chenyu5188(蓝色情调):
    还是不行!!!!!!!!!!!!!!!!!!!!!!!!!!!!错误信息:
    实时错误 “7005”
    行设置不可用
      

  13.   

    建议使用MSFlexGrid控件。在部件中可以引用它。示例:
    Private Sub Form_Load ()
       MSFlexGrid1.Rows = 8   ' 设置行数和列数。
       MSFlexGrid1.Cols = 5
    End SubPrivate Sub MSFlexGrid1_Click ()
       ' 将文本放到当前单元中。
       MSFlexGrid1.Text = "Here"
       '将文本放到第三行,第三列。
       MSFlexGrid1.Col = 2
       MSFlexGrid1.Row = 2
       MSFlexGrid1.Text = "There"
    End Sub
      

  14.   

    chenyu5188(蓝色情调) :
    谢谢了。可是microsoft Flexgrid control 是二维表。而我需要的是一维表格。怎样设置为一维表
      

  15.   

    chenyu5188(蓝色情调) :
    行了。我将microsoft Flexgrid control 改为一维表。但是总感觉功能不如DataGrid强。难道DataGrid就真的不行吗?
      

  16.   

    datagrid很好啊,我用的就是access2000啊,怎么没什么问题呢!?
    我觉得代码没什么问题,参考Cooly(准备失业的苦力) 的就可以了。
    建议1:建一个简单点的数据库,你用adodc数据控件绑定,测试一下datagrid有问题吗?
    建议2:你去下载vb的sp5,试试看(不过在我没有sp5的时候也没有类似的 问题啊!)
      

  17.   

    同意楼上的,不过刚才我在代码中多添加了一个recordset后,就出现了楼主所说的不显示的问题了,删除刚添加的代码也不行了。
      

  18.   

    第一个问题。我改用microsoft Flexgrid control 了。但是第二个问题还没解决。解决了九散分。麻烦大家了!
      

  19.   

    'ADODB与DataGridPrivate Sub Form_Load()
    Dim conn As ADODB.Connection
    Dim rst As ADODB.RecordsetSet conn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
    conn.Open , "sa"rst.CursorLocation = adUseClientrst.Open "select * from table1", conn, adOpenDynamic, adLockOptimistic
    Set DataGrid1.DataSource = rstEnd Sub
      

  20.   

    'Adodc与MSFlexGridDim myPageSize, i, j, cur_Page As LongPrivate Sub Command1_Click()
    On Error Resume NextAdodc1.Recordset.AbsolutePage = Adodc1.Recordset.AbsolutePage - 1
    cur_Page = Adodc1.Recordset.AbsolutePageMSFlexGrid1.Clear
    MSFlexGrid1.Rows = myPageSize + 1
    MSFlexGrid1.Cols = Adodc1.Recordset.Fields.Count
    For i = 0 To Adodc1.Recordset.Fields.Count - 1
        MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
    NextFor j = 1 To myPageSize
        For i = 0 To Adodc1.Recordset.Fields.Count - 1
            MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
            Adodc1.Recordset.MoveNext
        Next
    Next
    Adodc1.Recordset.AbsolutePage = cur_PageEnd SubPrivate Sub Command2_Click()
    On Error Resume NextAdodc1.Recordset.AbsolutePage = Adodc1.Recordset.AbsolutePage + 1
    cur_Page = Adodc1.Recordset.AbsolutePageMSFlexGrid1.Clear
    MSFlexGrid1.Rows = myPageSize + 1
    MSFlexGrid1.Cols = Adodc1.Recordset.Fields.CountFor i = 0 To Adodc1.Recordset.Fields.Count - 1
        MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
    NextFor j = 1 To myPageSize
        For i = 0 To Adodc1.Recordset.Fields.Count - 1
            MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
            Adodc1.Recordset.MoveNext
        Next
    NextAdodc1.Recordset.AbsolutePage = cur_Page
    End SubPrivate Sub Form_Load()
    On Error Resume Next
    myPageSize = 4cur_Page = 1Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = "select * from test"
    Adodc1.Refresh
    Adodc1.Recordset.PageSize = myPageSizeMSFlexGrid1.Rows = myPageSize + 1
    MSFlexGrid1.Cols = Adodc1.Recordset.Fields.CountFor i = 0 To Adodc1.Recordset.Fields.Count - 1
        MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
    NextFor j = 1 To myPageSize
        For i = 0 To Adodc1.Recordset.Fields.Count - 1
            MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
            Adodc1.Recordset.MoveNext
        Next
    NextAdodc1.Recordset.AbsolutePage = cur_PageEnd Sub
      

  21.   

    'Adodc + DataGrid
    Private Sub DataGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DataGrid1.Row = DataGrid1.RowContaining(Y)
    MsgBox DataGrid1.Columns(0).Text
    End SubPrivate Sub Form_Load()
    Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
    Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = "select * from test"
    Adodc1.Refresh
    Set DataGrid1.DataSource = Adodc1
    DataGrid1.AllowUpdate = False
    End Sub
      

  22.   

    a: DataGridHost.Col = 1
    b: DataGridHost.Row =1
    c: DataGridHost.Text = "aaa"因为DataGrid控件如果没有与数据源绑定,或者指定的行,列不存在,都是无法进行赋值的。
    如果需要实现这样的功能,建议使用MSFlexGrid。