添加标签页数等于行数

时间:2013-04-27 13:35:13

标签: vb.net

我的Access数据库在单人下几行。某些人的行数是1,但是另一个人的行数超过1。 我想创建标签页来插入该人的详细信息。

创建标签页时,

  1. 标签页数必须等于行数。 (如果那个人有04行 - 必须创建04个标签页。

  2. 将单独的MS-Access数据库行数据(列)放入该标签页

  3. 如果点击第一个标签页:----->该人员详细信息(字段数据/列)的第1行应该包含TextBox es或Label s。

    如果点击第4个标签页:------>该人员详细信息(字段数据/列)的第4行应该包含TextBox es或Label s。

    我已使用此代码

    根据行数创建了标签页
    Dim newPage As New TabPage()
    Dim RecCount As Integer
    
    While QReaderQ.Read()
        RecCount = RecCount + 1 ' Count How many Rows
    End While
    
    TabControl1.TabPages.Clear()
    
    For xXx = RecCount To 1 Step -1 ' to Desending Order ---->3,2,1
        newPage = New TabPage   'create new instance
            If xXx = 1 Then
                newPage.Text = "Repeat - 1"
            Else
                newPage.Text = "Repeat - " & xXx.ToString
            End If
        TabControl1.TabPages.Add(newPage)
    Next
    

    我希望将数据库中的详细信息放入标签页。

    示例:

    1 st 时间重复数据到第一个标签页(重复数据意味着DB列) 4 th 时间将数据重复到第4个标签页(重复数据意味着DB列)。

1 个答案:

答案 0 :(得分:1)

由于您正在使用Access,我将假设您正在使用OleDb。您没有指出QReaderQ是什么,但根据名称,它听起来像是OleDbDataReader

由于(再次,根据您发布的代码)您希望按降序排列,我建议您使用OleDbDataAdapter代替 - DataReader是仅向前的,因此您不能按相反顺序进行

我还建议移动代码,将每个标签页创建为自己的函数,并在For循环中调用该函数。

将所有这些放在一起可能看起来像这样:

Dim TabContent As DataTable
' Pass in your selection string and your connection object
Dim Adapter As New OleDbDataAdapter("SELECT * FROM table", con)
Dim newPage As TabPage

' Fill the DataTable TabContent with the result from your select command
Adapter.Fill(TabContent)

TabControl1.TabPages.Clear()

For xXx As Integer = TabContent.Rows.Count To 1 Step -1

    ' Pass in the current row - use xXx - 1 since the row collection is 0 based
    newPage = InitializeTabPage(TabContent.Rows(xXx - 1))
    newPage.Text = "Repeat - " + xXx.ToString()
    TabControl1.TabPages.Add(newPage)
Next

InitializeTabPage是一个返回TabPage的函数。您需要在此页面上创建控件。

Public Function InitializeTabPage(ByVal Row As DataRow) As TabPage

    Dim newPage As New TabPage()

    ' Create the control and bind the data from the row to them 

    Return newPage
End Function

InitializeTabPage函数中,您从表中获取DataRow。您需要在每个标签页上创建TextBoxes和Labels,然后将相应的数据从行绑定到它们。

例如,如果您有一个名为lblName的标签,并且您的行Name中有一列,则可以执行此操作:

lblName.Text = Row("Name").ToString()

一些有用的链接:

OleDbDataAdapter Class

A Really Simple Database - VB.NET和Access教程