我想实现动态打印,连接数据源的代码段如下:
Private Sub DataReport_Initialize()
 
Dim AdoCon As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
Set AdoCon = New ADODB.Connection
 AdoCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & strAppPath & ""  'strAppPath是连接字符串
  AdoCon.Open
   strSQL = "select 学号,姓名 from 学生基本信息 "
Set rs = AdoCon.ExecuteSQL(strSQL, MsgText)
   Set .DataSource = rs
总说无效数据源,请高手给个解决办法,谢谢了

解决方案 »

  1.   

    Set rs = AdoCon.ExecuteSQL(strSQL, MsgText)?
    再DataReport中写程序哦 。
    学习
      

  2.   

    现在的程序段就是在DataReport中写的
    Set rs = AdoCon.ExecuteSQL(strSQL, MsgText)是执行strSQL命令的
    跟 rs.open "select 学号,姓名 from 学生基本信息 ",AdoCon作用一样
      

  3.   

    Set .DataSource = rs
    你用了with ?
      

  4.   

    还有相关控件的DataField属性是不是设置正确
      

  5.   

    你也可以不在属性页中设置,用代码设置,比如你Section1上有个text1控件用来显示姓名:
    rpt.Sections("Section1").Controls("text1").DataField = "姓名"
      

  6.   

    Me.Sections("section1").Controls.Item("Text1" & (i + 1)).DataField = rs.Fields.Item(i).Name
    我用的是这条语句
      

  7.   

    "Text1" & (i + 1) 
    这个写法有问题
      

  8.   

    在我印象中DataReport是不支持控件数组的
    你在DataReport的属性窗口中,可以text1(1)这样命名RptTextBox ?
      

  9.   

    Me.Sections("section1").Controls.Item("Text1" & (i + 1)).DataField = rs.Fields.Item(i).Name如果是这错的话,Item后面的括号应该是个整数才行,item(int("Text1"&(i + 1)))
      

  10.   

    1.DataReport不支持类似Text1(1)这样的命名
    2.如果你用了Controls.Item属性,那么应该是:
    Me.Sections("section1").Controls.Item(i+1).DataField = rs.Fields.Item(i).Name或者你试试直接在属性窗口,为每一个text控件设置datafield属性(去掉所有相关代码),注意不要设置DataMember属性,看看是不是由此引起的错误