如何计算 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项目