我在FORM上放了很多的Label来显示数据,但是当数据有多条时我希望在
FORM上已经显示的第一条记录下方接着显示记录,请问高手教我怎么做。
例如:我查询出的记录有三条,我要在FORM上显示第一条和第二条,第三
条另外打开这一个FORM写,但是这个FORM上的Label是不变的,也就是说
只有这几个,不知道这样说清楚了没有。
form 页上的Label格式:
lblYYH         lblYYLX 
lblMLDJ        lblJJLB 
lblJBDJ        lblJFRL 
lblYDXZ        lblLTBZ 
lblLLBZ        lblJFBL 
lblCTBB        lblPTBB 
lblJLFS 
我填写数据的代码如下:
Public Sub 填写页面(nZHH As Long)
    Dim rs As New dbRecordset
      
    rs.Open "SELECT * FROM KHDA_YDD111 WHERE ZHH=" & nZHH
    Do While Not rs.EOF
        If Not rs.EOF Then
           lblYYH = rs("YYH")
           lblYYLX = rs("JFLX")
           lblMLDJ = rs("FLSM")
           lblJJLB = rs("FLSM")
           lblJBDJ = rs("JBDJ")
           lblJFRL = rs("JFRL")
           lblYDXZ = rs("YDXZ")
           lblLTBZ = rs("LTBZ")
           lblLLBZ = rs("LLBZ")
           lblJFBL = rs("BL")
           lblCTBB = rs("CTBB")
           lblPTBB = rs("PTBB")
           lblJLFS = rs("JLFS")
        End If
        rs.MoveNext
    Loop
    rs.Close
end sub

解决方案 »

  1.   

    显示多条记录为什么不用表格显示?datagrid、mshflexgrid、listview、tdbgrid包打天下。^_^
      

  2.   

    用这种方法在窗体上显示的是最后一条记录,如果有多条记录,要么用mshflexgrid控件来显示,要么用上一条下一条等按钮通过记录移动来显示
      

  3.   

    网格控件,如果不用编辑的,建议使用listview或msflexgrid
      

  4.   

    谢谢几位老兄了。可我不能用控件来显示,只能用Label,
    谁能教我怎么样用另一页显示吗?就是有多条数据记录时
    这一页只显示两条,再另用一页显示另两条记录。谢谢了
      

  5.   

    没有人能教我怎么样分页显示数据吗,就是在一页上只显示两条记录,点击
    下一页按钮显示两条后的数据,如果rs("YYH")=1和2我就将记录写到form上
    的Label上显示,但当记录rs("YYH")=3和4时再点击下一页按钮打开同一form
    将记录写在form上显示。
      

  6.   

    可以将所有LABEL 放入一个FRAME 中,用垂直滚动条移动滑块控制所显示的当前记录。如:
    'add four label1(index=0 to 3) to frame1,a vscroll on form1:Private Sub Form_Load()
    VScroll1.Move Frame1.Left + Frame1.Width, Frame1.Top, 500, Frame1.Height
    VScroll1.Max = 5
    VScroll1.Min = 1
    VScroll1.Value = 1
    End SubPrivate Sub VScroll1_Change()
    For i = 0 To 3
    Label1(i).Caption = "No." & VScroll1.Value & ":label1(" & i & ")"
    Next
    End Sub
      

  7.   

    不大明白,你数据库“YYH”等字段只有4条记录吗?如果有多条记录而你又想翻后一页后还是用同一个Form,那如果用户想看前一页的呢?
      

  8.   

    谢谢楼上的老兄,我的记录是通过SQL查询出的,最多只有“YYH=4”
    的情况,我的form上有下一页和退出等按钮,现在的问题就是我不知道
    要怎样将“YYH=3“和”YYH=4”的情况用同一页来显示。我填写等于1和2
    的代码如下:
    Public Sub 填写页面(nZHH As Long)
        Dim rs As New dbRecordset
        dim icount(2) as integer 
        rs.Open "SELECT * FROM KHDA_YDD111 WHERE ZHH=" & nZHH
        Do While Not rs.EOF
            If Not rs.EOF Then
               if rs("yyh")=1 then
                  lblYYH(icount(0)) = rs("YYH")
                  lblYYLX(icount(0)) = rs("JFLX")
                  lblMLDJ(icount(0)) = rs("FLSM")
                  lblJJLB(icount(0)) = rs("FLSM")
                  lblJBDJ(icount(0)) = rs("JBDJ")
                  lblJFRL(icount(0)) = rs("JFRL")
                  lblYDXZ(icount(0)) = rs("YDXZ")
                  lblLTBZ(icount(0)) = rs("LTBZ")
                  lblLLBZ(icount(0)) = rs("LLBZ")
                  lblJFBL(icount(0)) = rs("BL")
                  lblCTBB(icount(0)) = rs("CTBB")
                  lblPTBB(icount(0)) = rs("PTBB")
                  lblJLFS(icount(0)) = rs("JLFS")
                  ......
               end if
               if rs("yyh")=2 then
                  lblYYH(icount(1)) = rs("YYH")
                  lblYYLX(icount(1)) = rs("JFLX")
                  lblMLDJ(icount(1)) = rs("FLSM")
                  lblJJLB(icount(1)) = rs("FLSM")
                  lblJBDJ(icount(1)) = rs("JBDJ")
                  lblJFRL(icount(1)) = rs("JFRL")
                  lblYDXZ(icount(1)) = rs("YDXZ")
                  lblLTBZ(icount(1)) = rs("LTBZ")
                  lblLLBZ(icount(1)) = rs("LLBZ")
                  lblJFBL(icount(1)) = rs("BL")
                  lblCTBB(icount(1)) = rs("CTBB")
                  lblPTBB(icount(1)) = rs("PTBB")
                  lblJLFS(icount(1)) = rs("JLFS")
                  ......
               end if
            End If
            rs.MoveNext
        Loop
        rs.Close
    end sub
      

  9.   

    建立显示数据的窗体frmShowData,将取数据和填充Label的代码放在另一个窗体或模块中,
    Dim frmA As New frmShowDate
    Dim frmB As New frmShowDate......Select Case rs("yyh")
        Case 1,2:Call ShowData(frmA)
        Case 3,4:Call ShowData(frmB)
    End Select
    ......Private Function ShowData(frmData As Object)
        With frmData
        ......
        End With
    End Function不知道这样可否?
      

  10.   

    今天了还是没有解决。by_stephen(大白菜)兄,你的Dim frmA As New frmShowDate
    代码是定义什么呀没弄懂,怎么我定义时没有frmShowDate显示呢。
      

  11.   

    VB中的窗体其实是一个特殊的类,你添加了一个窗体,也就是定义了一个类。
    首先添加窗体(类) frmShowDate(名称任意)。然后声明此窗体类的两个实例,
    Dim frmA As New frmShowDate(与窗体类的名称相同)
    Dim frmB As New frmShowDate
      

  12.   

    谢谢by_stephen(大白菜)兄的指教,由于刚接触VB不懂的还很多。
    我现在的问题是在一个FORM上分为两半显示数据上半部和下半部
    都是放的LABEL,实际上是一LABEL组,我要将查询出的数据分页
    显示出来,我查询出数据有多条时我怎样将数据传过去呀?比如:
    rs.open"select zhh,yyh from khda_ydd111 where zhh=" & nZHH
    语句查询出同一总户有YYH为1,2,3,5四条的数据,我要用同一个
    FORM分两页来显示,第一页显示YYH为1,2的数据,点击FORM上的
    下一页按钮打开相同的FORM来显示YYH为3,5的数据,YYH的数据最多
    只有四条,但号码有可能不连续。
      

  13.   


    Public Sub 填写页面(nZHH As Long)
        Dim rs As New dbRecordset
        dim icount(2) as integer 
        rs.Open "SELECT * FROM KHDA_YDD111 WHERE ZHH=" & nZHH  ''此处加一排序
        rs.movefirst    ''Do While Not rs.EOF
            If Not rs.EOF Then
                  lblYYH(icount(0)) = rs("YYH")
                  lblYYLX(icount(0)) = rs("JFLX")
                  lblMLDJ(icount(0)) = rs("FLSM")
                  lblJJLB(icount(0)) = rs("FLSM")
                  lblJBDJ(icount(0)) = rs("JBDJ")
                  lblJFRL(icount(0)) = rs("JFRL")
                  lblYDXZ(icount(0)) = rs("YDXZ")
                  lblLTBZ(icount(0)) = rs("LTBZ")
                  lblLLBZ(icount(0)) = rs("LLBZ")
                  lblJFBL(icount(0)) = rs("BL")
                  lblCTBB(icount(0)) = rs("CTBB")
                  lblPTBB(icount(0)) = rs("PTBB")
                  lblJLFS(icount(0)) = rs("JLFS")
                  ......
                  rs.MoveNext
                  If Not rs.EOF Then
                  lblYYH(icount(1)) = rs("YYH")
                  lblYYLX(icount(1)) = rs("JFLX")
                  lblMLDJ(icount(1)) = rs("FLSM")
                  lblJJLB(icount(1)) = rs("FLSM")
                  lblJBDJ(icount(1)) = rs("JBDJ")
                  lblJFRL(icount(1)) = rs("JFRL")
                  lblYDXZ(icount(1)) = rs("YDXZ")
                  lblLTBZ(icount(1)) = rs("LTBZ")
                  lblLLBZ(icount(1)) = rs("LLBZ")
                  lblJFBL(icount(1)) = rs("BL")
                  lblCTBB(icount(1)) = rs("CTBB")
                  lblPTBB(icount(1)) = rs("PTBB")
                  lblJLFS(icount(1)) = rs("JLFS")
                  ......
               end if
            End If
            ''rs.MoveNext
        ''Loop
        rs.Close
    end sub
    以上为程序初始,下一页按钮的事件代码查询语句相同,向下移动指针判断出第二条纪录,然后,movenext,为新一页的第一条纪录,再movenext,为新一页的第二条纪录。
      

  14.   

    假设你显示数据的窗体为frmShowData。窗体上下一个按纽为cmdNext。
    Private rsData As New dbRecordsetPrivate Sub OpenRs()    rsData.Open "SELECT * FROM KHDA_YDD111 WHERE ZHH=" & nZHH    ShowData(rsData)End SubPublic Sub ShowData(rsTmp As dbRecordset)
        
        Dim i As Integer    '因为知道记录数,可以用固定的循环。
        For i=0 to 1
            If Not rs.EOF Then
                '在Lable上显示数据。
                ......
            End if
            rsData.MoveNext
        NextEnd SubPrivate Sub cmdNext_Click()
        
        Dim frmNext As New frmShowData
        
        '调用另一个窗体的公用过程显示另外的记录。
        'rsData传递过去时,指针应该停留在第三条记录上。
        frmNext.ShowData(rsData)
        frmNext.Show
        
    End Sub有些地方考虑不周,仅供参考。
      

  15.   

    不好意思,刚发完,发现几处错误,改正从发。假设你显示数据的窗体为frmShowData。窗体上下一个按纽为cmdNext。
    Private rsData As New dbRecordsetPrivate Sub OpenRs(nZHH As Long)    rsData.Open "SELECT * FROM KHDA_YDD111 WHERE ZHH=" & nZHH    ShowData(rsData)End SubPublic Sub ShowData(ByRef rsTmp As dbRecordset)
        
        Dim i As Integer    '因为知道记录数,可以用固定的循环。
        For i=0 to 1
            If Not rsTmp.EOF Then
                '在Lable上显示数据。
                ......
            End if
            rsTmp.MoveNext
        NextEnd SubPrivate Sub cmdNext_Click()
        
        Dim frmNext As New frmShowData
        
        '调用另一个窗体的公用过程显示另外的记录。
        'rsData传递过去时,指针应该停留在第三条记录上。
        frmNext.ShowData(rsData)
        frmNext.Show
        
    End Sub有些地方考虑不周,仅供参考。
      

  16.   

    问题基本解决,今天下班结帖,谢谢大家了,尤其要感谢by_stephen(大白菜)兄的
    多次帮助。现在还有个问题,如果是不止四条记录该怎么做呢?
      

  17.   

    开动脑筋。多点几次Next按纽就知道了。
      

  18.   

    谢谢by_stephen(大白菜)兄,其实我没有按你说的方法做,因为往ShowData(rsData)
    传值时老是说类型不匹配等问题,我把我原来的程序中的循环去掉了,然后一个一个
    地写,每次写两个记录,这样来实现的,但我想到如果这样做大于四条记录就不好做
    了,因为我是movenext到第三条记录时再写,写完屏蔽下一页按钮,如果不屏蔽的话
    继续点击按钮还是会打开第三条和第四条记录。总之还是谢谢大家。