【问题标题】:Using text boxes as a criteria for list boxes in Access 2016在 Access 2016 中使用文本框作为列表框的条件
【发布时间】:2019-05-22 18:59:22
【问题描述】:

我有一个包含 3 个列表框的表单,我试图根据 2 个条目/文本框给出的范围来查询这些列表框。我不确定如何让脚本查看文本框。

Me.lstDailytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpdailystck WHERE [Date] BETWEEN  Me.txtStart.Value And Me.txtEnd.Value"

Me.lstMonthlytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpmonthstck WHERE [Date] BETWEEN Me.txtStart.Value AND Me.txtEnd.Value "

Me.lstYearlytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpyearstck WHERE [Date] BETWEEN Me.txtStart.Value AND Me.txtEnd.Value "

当我运行它时,它会询问Me.txtStart.valueMe.txtEnd.value 的值。我假设有一种方法可以让 VBA 知道它指的是对象而不是变量。我无法弄清楚。希望有人知道我做错了什么。

【问题讨论】:

    标签: sql vba ms-access


    【解决方案1】:

    只需连接需要从字符串转换日期的值,请确保在分配语句后也Requery

    Dim whereClause As String
    
    whereClause = " WHERE [Date] BETWEEN CDate('" & Me.txtStart.Value & "')" _
                     & "             AND CDate('" & Me.txtEnd.Value & "')"
    
    Me.lstDailytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpdailystck " & whereClause
    Me.lstDailytop.Requery
    
    Me.lstMonthlytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpmonthstck " & whereClause
    Me.lstMonthlytop.Requery
    
    Me.lstYearlytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpyearstck " & whereClause
    Me.lstYearlytop.Requery
    

    或者,您可以放弃串联 SQL 字符串的构建,并直接在具有绝对引用的表单控件上使用一个查询语句。使用NZ() 查询可以适应表单日期值是否为空。

    SQL (将以下语句保存为属性表下每个组合框各自RowSource 中的默认分配,永不更改)

    SELECT StockCode, SumOfQTY, [Date] 
    FROM qrytpdailystck
    WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
                     AND NZ(Forms!myFormName!txtEnd, [Date])
    
    SELECT StockCode, SumOfQTY, [Date] 
    FROM qrytpmonthstck
    WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
                     AND NZ(Forms!myFormName!txtEnd, [Date])
    
    SELECT StockCode, SumOfQTY, [Date] 
    FROM qrytpyearstck
    WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
                     AND NZ(Forms!myFormName!txtEnd, [Date])
    

    VBA (在宏或模块中需要触发事件的下方运行)

    Me.lstDailytop.Requery    
    Me.lstMonthlytop.Requery    
    Me.lstYearlytop.Requery
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多