1

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

创建标签页时,

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

  2. 单独的 MS-Access DB 行数据(列)放入该选项卡页面

如果单击第一个选项卡页: -----> 该人员详细信息(字段数据/列)的第一行应该带有TextBoxes 或Labels。

如果单击第 4 个选项卡页: ------> 该人员详细信息(字段数据/列)的第 4 行应该带有TextBoxes 或Labels。

我已经使用此代码根据行数创建了标签页

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

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

例子:

一次重复数据到第一个标签页(重复数据平均 DB 列)。
第4重复数据到第 4 个标签页(重复数据平均 DB 列)。

4

1 回答 1

1

由于您使用的是 Access,我将假设您使用的是OleDb. 您没有指明是什么QReaderQ,但根据名称,它听起来像是一个OleDbDataReader.

由于(再次,根据您发布的代码)您想按降序排列,我建议您使用OleDbDataAdapter- DataReaders 仅向前,因此您不能以相反的顺序排列。

我还建议移动您的代码以将每个标签页创建到它自己的函数中,并从您的 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。您需要在每个标签页上创建文本框和标签,然后从行中将适当的数据绑定到它们。

例如,如果您有一个名为 的标签lblName,并且在您的 row 中有一个列Name,您可以这样做:

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

一些有用的链接:

OleDbDataAdapter 类

一个真正简单的数据库- VB.NET 和 Access 教程

于 2013-04-27T22:27:28.643 回答