我要做的一个报表形式如下:
                 **课程表
                 第一个学期
    课 课 课 课 课 课 课 课 课  ....
    程 程 程 程 程 程 程 程 程  ....
    名 名 名 名 名 名 名 名 名  ....
    1  2  3  4   5  6  7  8  9  ....                 第二个学期
    课 课 课 课 课 课 课 课 课  ....
    程 程 程 程 程 程 程 程 程  ....
    名 名 名 名 名 名 名 名 名  ....
    1  2  3  4   5  6  7  8  9  ....                 第三个学期
    课 课 课 课 课 课 课 课 课  ....
    程 程 程 程 程 程 程 程 程  ....
    名 名 名 名 名 名 名 名 名  ....
    1  2  3  4   5  6  7  8  9  ....                 第四个学期
    课 课 课 课 课 课 课 课 课  ....
    程 程 程 程 程 程 程 程 程  ....
    名 名 名 名 名 名 名 名 名  ....
    1  2  3  4   5  6  7  8  9  ....
现在我的问题是课程名的内容需要从表中读入,该表中一列标记课程名,一列标记课程是属于哪个学期,每个学期的课程数不相同,只知道<=15,所以我在报表中每个学期预流了15个lable来添入课程名,但下面我就不知道该怎么做了,lable的名字为lable1-lable60,怎样把读入的课程名填入正确的位置呢?我不知道该怎么做。而且我在另一个报表程序中发现如果空出几个lable不添数据,程序就会报错,而我现在这种情况肯定会有空出的lable,我不知道该怎么办, 请高手指点,万分感谢!!!

解决方案 »

  1.   

    对不起,没看清楚,excel怎么会有label。
    你可以设label为控件组,你贴下代码?
      

  2.   

    不是excel,呵呵,就是datareport,用vb做一个datareport
    本来我准备做的方法类似于下面的代码:
    Dim ct As Object
    Me.Sections.Item("section4").Controls.Item("Label1").Caption = "我是唐磊"
    For Each ct In Me.Sections.Item("section1").Controls
    If TypeName(ct) = "RptTextBox" Then
    Select Case ct.Name
    Case "Text1"
    ct.DataField = mrc.Fields("nj").Name
    Case "Text2"
    ct.DataField = mrc.Fields("bj").Name
    End Select
    End If
    Next
      

  3.   

    出错是因为查询结果中有字段的值为null,将null给一变量赋值vb会报错,
    可用 on error resume next 语句跳过即可。
      

  4.   

    还不是很明白,你这样判断是为什么:
    Select Case ct.Name
    Case "Text1"
    ct.DataField = mrc.Fields("nj").Name
    Case "Text2"
    ct.DataField = mrc.Fields("bj").Name
    End Select我是这样导出来,不管字段是否为空,可以的,不过你应该不是这个问题。
    sql="-------------"rs.Open sql, connstring, , , adCmdText
    Set dr.DataSource = rs
    dr.Sections("detail").Controls("text1").DataField = "姓名"
    dr.Sections("detail").Controls("text2").DataField = "证号"
    dr.Show vbModal
    rs.Close
      

  5.   

    '给个思路,大致如下:
    '窗体上放有六十个Label ,Label1 、2 、3.......
    '课程表中有“课程名称”、“学期”两个字段
    Option Explicit
    Public mCnnstring As StringPrivate Sub Command1_Click()
    Dim mRst As New ADODB.Recordset
    Dim mTemp, mAA, mBB, mCC, mDD, mEE, mFF As Integer
    Dim mCtrl As Control
        mAA = 0
        mBB = 10
        mCC = 20
        mDD = 30
        mEE = 40
        mFF = 50
        mRst.Open "Select * From 课程表", mCnnstring, adOpenStatic, adLockOptimistic, adCmdText
        Do Until mRst.EOF
            Select Case mRst("学期")
                Case "第一学期"
                    mAA = mAA + 1
                    mTemp = mAA
                Case "第二学期"
                    mBB = mBB + 1
                    mTemp = mBB
                Case "第三学期"
                    mCC = mCC + 1
                    mTemp = mCC
                Case "第四学期"
                    mDD = mDD + 1
                    mTemp = mDD
                Case "第五学期"
                    mEE = mEE + 1
                    mTemp = mEE
                Case "第六学期"
                    mFF = mFF + 1
                    mTemp = mFF
            End Select
            For Each mCtrl In Me
                If TypeOf mCtrl Is Label Then
                    If Right(mCtrl.Name, Len(mCtrl.Name) - 5) = CStr(mTemp) Then
                        If IsNull(mRst("课程名称")) Then
                            mCtrl.Caption = ""          '若字段为空,则赋零长度串值代替
                        Else
                            mCtrl.Caption = mRst("课程名称")
                        End If
                    End If
                End If
            Next mCtrl
            mRst.MoveNext
        Loop
    End SubPrivate Sub Form_Load()
        mCnnstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
    End Sub
      

  6.   

    请问这句是什么意思啊?
    If Right(mCtrl.Name, Len(mCtrl.Name) - 5) = CStr(mTemp) Then...
    小弟是菜鸟,请指教…^_^