如何计算 Visual Basic 中的最大行数

Posted

技术标签:

【中文标题】如何计算 Visual Basic 中的最大行数【英文标题】:How to count Maximum rows in Visual Basic 【发布时间】:2013-12-10 03:28:45 【问题描述】:

我有下一个按钮的代码。数据库中的数据正常显示。 问题是当我单击下一步按钮时,数据将再次重复为 --> data1 > data2 > data3 > data1 > data2... 有人告诉我我应该计算最大行数,但我不知道该怎么做;我也搜索了编码,但没有任何我理解的东西出来。 请帮帮我~~~(我英语不太好,抱歉)

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 btnNext.Click

    btnBack.Enabled = True

    da.Fill(dt)
    If position >= 0 Then

        position = position + 1
        Me.lblID.Text = dt.Rows(position).Item("RefNo")
        Me.txtboxName.Text = dt.Rows(position).Item("Name")
        Me.rtxtboxAddress.Text = dt.Rows(position).Item("Address")
        Me.txtboxContactNo.Text = dt.Rows(position).Item("ContNo")
        Me.txtboxFaxNo.Text = dt.Rows(position).Item("FaxNo")
        Me.txtboxBrand.Text = dt.Rows(position).Item("Brand")
        Me.txtboxModel.Text = dt.Rows(position).Item("Model")
        Me.txtboxSN.Text = dt.Rows(position).Item("SN")
        Me.rtxtboxProblems.Text = dt.Rows(position).Item("Problems")
        Me.rtxtboxTechRemark.Text = dt.Rows(position).Item("TechRemark")
        Me.rtxtboxServChange.Text = dt.Rows(position).Item("ServiceChange")
        Me.rtxtboxPartChange.Text = dt.Rows(position).Item("PartsChange")
        Me.txtboxTotal.Text = dt.Rows(position).Item("TotalPrice")

    End If

End Sub

我不知道这是否也需要告诉,但是......有两个不同的类 1) database.vb - sql编码 2) forms.vb - 为我的 Visual Basic 表单编码

请帮帮我!!

感谢所有回答我的人!重新编码后,我找到了问题的解决方案。 没搞清楚位置值和行值是一样的。我的位置值 = 0 和 dt.Rows.Count = 4,因为我有 4 个数据;所以当位置= 0时,行= 1。我对此感到困惑;我认为这两个值都是从 0 开始的。

【问题讨论】:

嗯,我真的很惊讶你没有得到IndexOutOfRangeException...如果超过最大行数,你应该得到sounds like。无论哪种方式,您都可以使用dt.Rows.Count 来获取DataTable 中的行数。 @JeffBridgman 对不起......但我不明白。 dt.Rows.Count在哪里写编码? 【参考方案1】:

更多代码...这是糟糕代码...不要依赖它进行生产,因为我确信它无法处理很多极端情况,但是我想给你一张关于如何处理它的图片,以及至少一瞥你可能需要担心的东西(例如数据表中的 0 行)。请完成这个并尝试理解代码...不要简单地复制/粘贴。

Private Sub btnNext_Click(ByVal sender As System.Object, 
                          ByVal e As System.EventArgs) Handles btnNext.Click

    If position >= dt.Rows.Count Then
        // No more rows to show after this one, so disable the next button
        btnNext.Enabled = False
    End If

    // Put check for zero in btnBack.Click to make sure it doesn't go below 0
    // I'm assuming position starts off at 0, and that you're showing the very
    // first row by default
    position += 1

    // This is to handle a condition like having 0 rows in the data table, 
    // in which case don't want to do the next part...
    If position > dt.Rows.Count Then Exit Sub

    // Only necessary once really, but we'll do it each time anyway...
    btnBack.Enabled = True

    da.Fill(dt) 

    position += 1

    // Update various textboxes and labels...
End Sub

【讨论】:

我尝试理解编码并使用它。但是也有一个问题......对此很抱歉,但请帮我解决它。我禁用了 position += 1 行,因为它使行从 data1 > data3 跳转而不显示 data2,尽管如果我单击上一个按钮,那么 data2 将显示(所以它不像数据丢失)。但是,如果我禁用该行,则不会显示 data3(仅 data1 > data2)!我不知道为什么,但是下一个按钮被禁用了,那是不是意味着它到达了不是最后一个的最大行? 索引从零开始...当你第一次进入这个函数的时候是位置0的值?尝试设置断点以查看值是什么。 位置值=0。 嗯...抱歉,我不知道!【参考方案2】:

dt.Rows.Count 是 Rows 集合中的行数。任何时候您想检查是否已达到最大行数,将行数与 dt.Rows.Count 进行比较

【讨论】:

对不起...但我不明白。 dt.Rows.Count在哪里写编码? 我添加了更多解释【参考方案3】:

da、dt 和 position 应该在上面的 sub 之外声明。 Fill 语句也应该在 sub 之外执行。

在子里:

       If position >= 0 and position  < dr.rows.count then
           do stuff above
       else
           Beep ' out of range
       end if

【讨论】:

以上是关于如何计算 Visual Basic 中的最大行数的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Basic 2012中使用mdb数据库中的数据填充列表框?

Visual Basic 中的校验和计算

如何使用两台计算机连接某个网站和一个visual basic项目

在 Visual Basic 2010 中的表单中的选项卡之间传递值

Visual Basic 6代码中的运行时溢出错误

您如何处理源代码管理中的 Visual Basic 6.0 frm 和 frx 文件?