各位能否帮我解决一下这个问题?我想学习设计一个打印报表的程序,很简单,窗体上两个check控件,一个“报表预览”按钮,一个退“退出”按钮。
    我的想法是,如果用户只选了第一个check,就只在报表上显示“daima”字段的内容,隐藏“mingcheng”字段在报表上所使用的“label”和“text”控件,如果只选了第二个check,就只在报表上显示“mingcheng”字段;如果两个都选,那么就全显示出来。现在请看代码如下:Option Explicit
Dim testdb As New ADODB.Connection
Dim testrec As New ADODB.Recordset
——————————————————————————————
Private Sub Command1_Click()Dim rsstr1 As String
Dim rsstr2 As String    rsstr2 = "select mingcheng from testtable"
    rsstr1 = "select daima from testtable"
    
    If Check1.Value = 1 And Check2.Value = 0 Then
        testdb.Open ("Provider=Microsoft.Jet.OLEDB.4.0;data source=d:\vb\data\test.mdb")
        testrec.CursorLocation = adUseClient
        testrec.Open rsstr1, testdb, adOpenStatic, adLockReadOnly, adCmdText
        Set DataReport1.DataSource = testrec
        DataReport1.Sections("section2").Controls("label1").Visible = True
        DataReport1.Sections("section1").Controls("text1").Visible = True
        DataReport1.Sections("section1").Controls("text1").DataField = "daima"
    End If
    
    If Check1.Value = 0 And Check2.Value = 1 Then
        testdb.Open ("Provider=Microsoft.Jet.OLEDB.4.0;data source=d:\vb\data\test.mdb")
        testrec.CursorLocation = adUseClient
        testrec.Open rsstr2, testdb, adOpenStatic, adLockReadOnly, adCmdText
        Set DataReport1.DataSource = testrec
        DataReport1.Sections("section2").Controls("label2").Visible = True
        DataReport1.Sections("section1").Controls("text2").Visible = True
        DataReport1.Sections("section1").Controls("text2").DataField = "mingcheng"
    End If
    
    If Check1.Value = 1 And Check2.Value = 1 Then
        testdb.Open ("provider=microsoft.jet.oledb.4.0;data source=d:\vb\data\test.mdb")
        testrec.CursorLocation = adUseClient
        testrec.Open "select daima,mingcheng from testtable", testdb, adOpenStatic, adLockReadOnly, adCmdText
        Set DataReport1.DataSource = testrec
        DataReport1.Sections("section2").Controls("label1").Visible = True
        DataReport1.Sections("section1").Controls("text1").Visible = True
        DataReport1.Sections("section1").Controls("text1").DataField = "daima"
        DataReport1.Sections("section2").Controls("label2").Visible = True
        DataReport1.Sections("section1").Controls("text2").Visible = True
        DataReport1.Sections("section1").Controls("text2").DataField = "mingcheng"
    End If
    
    If Check1.Value = 0 And Check2.Value = 0 Then
        GoTo out:
    End If
    
    DataReport1.Show
out:
End Sub
————————————————————————————————
Private Sub Command2_Click()
testrec.Close
testdb.Close
Unload Form1
End Sub
结果在运行时报表的窗口一出来,程序就报告说:未找到datafield'(空)'
请问这是为什么?怎么解决?
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
     可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar