【问题标题】:need help with ADO in VB6在 VB6 中需要 ADO 的帮助
【发布时间】:2011-03-06 05:02:26
【问题描述】:

我正在为我的一个朋友制作一个 POS 系统,非常小巧简单。

现在几乎所有内容都已编码,除了库存视图

我正在尝试使它在单击按钮时加载到列表视图中 UPC 代码和与该 UPC 关联的名称。

我是编程新手,我正在尝试自己做这件事。我知道我需要在数据库中获取一些项目(多少 UPC),然后在列表视图中循环添加信息。

但我无法获取数据库中有多少行来开始和结束循环

【问题讨论】:

  • 很大程度上取决于您是使用 DAO 还是 ADO 对象来访问数据库。告诉我们这可能会为您提供更有针对性的答案。一般来说,尽管 Recordsets 有一个 RecordCount 属性,可以根据您请求的 CursorType 使用该属性。您还可以执行 Count(*) 查询来获取记录数。
  • 对不起,我看到标题里写着 ADO。

标签: vb6 ado


【解决方案1】:

如果您发布一些代码,这会更容易,这样我们就可以看到您从什么开始。

但是,您应该能够执行类似这样的操作(我的 VB/ADO 生锈了,所以我可能会稍微破坏一下语法。正如 Chris 上面所说的,VB6 有点太长了......)。在大多数情况下,您不需要知道返回多少记录来填充您的 listView - 只需使用“Do Until”循环,如下所示:

Public Sub LoadListview()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    Dim SQL As String
    SQL = _
        "SELECT . . . " & _
        "FROM . . . " & _
        "WHERE . . . "

    Set cn = New ADODB.Connection

    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "YourConnectionString"
        .Open
    End With

    Set rs = New ADODB.Recordset

    rs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly

    With rs
        If Not .EOF Then
            Do Until .EOF
                ' Your code to populate your ListView Here
            .MoveNext
            Loop
        End If
    End With

    rs.Close
    cn.Close

        Set rs = Nothing
    Set cn = Nothing

End Sub

请注意,我在这里稍微简化了一些事情。实际上,如果您将条件传递给 WHERE 子句,您通常应该将 PARAMETERS 与 ADODB.Command 对象结合使用。在此示例中,我没有包含 ADODB.Command。

【讨论】:

  • 这是我如何编码的示例,您的代码对我来说非常复杂
  • Dim rs As New ADODB.Recordset rs.Open "tblitem", con, adOpenDynamic, adLockPessimistic rs.MoveLast x = rs.Fields("itemcode") + 1 Text1.Text = x我只是想获取数据库中的行数
  • @enko:嗯,这并不复杂。如果您不理解这一点,那么在尝试用 VB 6 编写应用程序的其余部分时,您将完全迷失方向。我建议您拿起一本教您如何使用该语言进行编程的书。而且,正如其他人所建议的那样,如果您以前没有使用过 VB 6 的经验,那么您最好从另一种更现代的语言开始。 VB.NET 或 C# 是数据库交互的不错选择。
  • @XIVSolutions:在扫描这段代码的复杂性时,我注意到您显然觉得有必要在方法的顶部声明所有变量。为什么,究竟是什么?这只是多年使用确实需要的语言工作的旧习惯吗?在需要它们的代码行上方 声明变量有很多优点。在这个 sn-p 中它并没有带来巨大的交易,但对于更复杂的代码来说,它肯定是需要考虑的。
  • @Cody 这是我的程序我试图做的最后一件事。我确实想从 VB.Net 开始,但我所知道的很少是在 vb6 中。一旦我完成这部分,我将进入 vb.net
猜你喜欢
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
相关资源
最近更新 更多