VBA 代码逐句翻译:从工作表中查询数据并填充列表视图

以下两段代码分别定义了两个名为 Addlistview2 和 Addlistview3 的公共子过程,用于从不同的工作表中查询数据,并根据查询结果填充相应的列表视图控件。

代码1:Addlistview2

Public Sub Addlistview2()
    Dim sql As String, Arr As Variant
    With UserForm1
        sql = "select ID,货号,名称,厂家,规格型号,存放温度,单位,批号,有效期,入库人员,数量,日期,出库数量,库存数量 from [入库$] where 1=1"
        If .TextBox3.Text <> "" Then
            sql = sql & " and 名称 like '%" & .TextBox3.Text & "%'"
        End If
        If .TextBox4.Text <> "" Then
            sql = sql & " and 厂家 like '%" & .TextBox4.Text & "%'"
        End If
        If .TextBox7.Text <> "" Then
            sql = sql & " and 日期>=#" & .TextBox7.Text & "#"
        End If
        If .TextBox8.Text <> "" Then
            sql = sql & " and 日期<=#" & .TextBox8.Text & "#"
        End If
        If .ComboBox1.Text <> "" Then
            sql = sql & " and 入库人员='" & .ComboBox1.Text & "'"
        End If
        SqlOperation.SelectCommand = sql & " order by 日期 desc"
        If SqlOperation.GetRstDataBoolean(Arr) Then
            ListViewOperation2.DataSource = Arr
        Else
            ListViewOperation2.CommandButtonEnabled_False
        End If
    End With
End Sub

代码2:Addlistview3

Public Sub Addlistview3()
    Dim sql As String, Arr As Variant
    With UserForm1
        sql = "select ID,货号,名称,厂家,规格型号,存放温度,单位,批号,有效期,出库人员,数量,日期,备注 from [出库$] where 1=1"
        If .TextBox5.Text <> "" Then
            sql = sql & " and 名称 like '%" & .TextBox5.Text & "%'"
        End If
        If .TextBox6.Text <> "" Then
            sql = sql & " and 厂家 like '%" & .TextBox6.Text & "%'"
        End If
        If .TextBox10.Text <> "" Then
            sql = sql & " and 日期>=#" & .TextBox10.Text & "#"
        End If
        If .TextBox9.Text <> "" Then
            sql = sql & " and 日期<=#" & .TextBox9.Text & "#"
        End If
        If .ComboBox2.Text <> "" Then
            sql = sql & " and 出库人员='" & .ComboBox2.Text & "'"
        End If
        SqlOperation.SelectCommand = sql & " order by 日期 desc"
        If SqlOperation.GetRstDataBoolean(Arr) Then
            ListViewOperation3.DataSource = Arr
        Else
            ListViewOperation3.CommandButtonEnabled_False
        End If
    End With
End Sub

代码逐句翻译

1. 声明变量

  • Dim sql As String, Arr As Variant:声明两个变量,sql 用来存储查询语句,Arr 用来存储查询结果。

2. 引用用户窗体

  • With UserForm1:引用名为 UserForm1 的用户窗体,后续代码中的操作都将作用于该用户窗体。

3. 初始化查询语句

  • sql = "select ID,货号,名称,厂家,规格型号,存放温度,单位,批号,有效期,入库人员,数量,日期,出库数量,库存数量 from [入库$] where 1=1" :定义一个查询语句,从名为 "入库$" 的工作表中选择所有列,并添加一个 "where 1=1" 的条件,方便后续添加其他条件。

4. 添加查询条件

  • If .TextBox3.Text <> "" Then ... End If:如果用户窗体中的文本框 3 不为空,则将查询语句拼接上 "and 名称 like '%文本框3的文本%'",表示查询名称包含文本框 3 文本内容的记录。
  • 代码中其他类似 If...Then 语句,分别对应文本框 4、7、8 和组合框 1 的文本,分别添加查询条件。

5. 设置排序条件

  • SqlOperation.SelectCommand = sql & " order by 日期 desc" :将查询语句拼接上 "order by 日期 desc",表示按照日期列降序排序。

6. 执行查询并填充列表视图

  • If SqlOperation.GetRstDataBoolean(Arr) Then ... End If:调用 SqlOperation 对象的 GetRstDataBoolean 方法执行查询,并将查询结果存储在 Arr 变量中。
  • ListViewOperation2.DataSource = Arr:将查询结果填充到名为 ListViewOperation2 的列表视图控件中。
  • ListViewOperation2.CommandButtonEnabled_False:如果查询失败,则禁用列表视图控件的按钮。

7. 代码结尾

  • End With:结束对 UserForm1 的引用。
  • End Sub:结束子过程。

代码 2 的逻辑与代码 1 类似,只是查询的目标工作表不同,并填充不同的列表视图控件。

总结

这两段 VBA 代码展示了如何从工作表中查询数据,并根据查询结果填充列表视图控件。代码示例包括使用条件语句、拼接 SQL 语句、操作用户窗体和列表视图控件等操作。通过学习这些代码,可以了解如何将 VBA 代码应用于数据查询和数据展示,并为实际应用开发提供参考。


原文地址: https://www.cveoy.top/t/topic/lCA2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录