我用datareport做报表的,
Private Sub DataReport_Initialize()
    
    Dim cn As New ADODB.Connection   '定义ADO的连接对象
    Dim rs As New ADODB.Recordset    '定义ADO的记录集对象
    cn.Open "Provider=SQLOLEDB;Password=sa;User ID=sa;Initial Catalog=hr;Data Source=dd-0c6ff813f959" '调用连接对象的open方法打开连接
    rs.Open "select * from worker where worknumber='" & gonghao & "'", cn, adOpenForwardOnly, adLockReadOnly, adCmdText   '调用记录集对象的open方法来执行SQL语句
    Set DataReport1.DataSource = rs
    
    MsgBox gonghao, vbExclamation + vbOKOnly, "提示信息"
    DataReport1.Sections.Item("section1").Controls.Item("text1").DataField = "workname"
    
End Sub
可是他却提示:报表部分与数据源不匹配
这是什么原因啊?
我可以肯定我的数据源没错的啊,因为不用报表的时候做的查询和录入都是可以的。
高手教教我啊!

解决方案 »

  1.   

    DataReport1.Sections.Item("section1").Controls.Item("text1").DataField = "workname"
    -----------------------------
    这句可能不对吧!
    要把text1的datafield给定一个具体的字段才行。
    如:rs.Fields(1).Name 才行
      

  2.   

    DataReport1.Sections.Item("section1").Controls.Item("text1").DataField = "workname"
    这句放到Set DataReport1.DataSource = rs之前试试
      

  3.   

    DataReport1.Sections("section1").Controls("text1").DataField = "workname"
      

  4.   

    连接数据库字符串:
    "Provider = SQLOLEDB.1;Persist Security Info = False;" & _
    "User ID = sa;Password = 123;Data Source = 192.168.0.1;" & _
    "Initial Catalog = DBname "