MS访问两个日期之间的结果作为表单中的文本框

时间:2015-03-12 22:24:22

标签: sql vba access-vba

我在SQL中发出以下查询并且工作正常

SELECT SUM(goudOpkoop.winst) 
FROM goudOpkoop 
WHERE goudOpkoop.date
BETWEEN '2015-1-10' AND '2015-1-22'

我希望在 Textbox 3 (名称Text183)中的表格中有两个日期的最后一个,一个在 Textbox 1 (名称Text179)和其他日期在文本框2(名称Text181)已被选中。

我想我需要为 Textbox 2 使用AfterUpdate代码构建器,并在那里发出查询以最终在 Textbox 3 中显示结果。 我已经与SQL服务器链接。

  

信息:ODBC; DSN = Essence Test ;; TABLE = goudOpkoop

在我不是VBA的专业人士时,我不知道如何让这个工作。

1 个答案:

答案 0 :(得分:0)

没有经过测试,但应该稍微做一点,除非我写了一个错字。

在“短日期”中更改2个日期文本框的格式,这样您将拥有日历选择器,并确保您的日期格式正确

在表单模块中创建此子目录:

Private Sub CheckSUM()

    Dim RST As Recordset
    Dim SQL As String

    ' Reset the result textbox
    Text183.value = ""

    ' If your 2 date textboxes are not populated, cancel
    If Text179.Value = "" or Text181.Value = "" Then Exit Sub

    ' Prepare the query, with proper formating of the dates
    SQL = " SELECT SUM(goudOpkoop.winst) AS mySum " & _
          " FROM goudOpkoop " & _
          " WHERE goudOpkoop.Date " & _
          "     BETWEEN '" & Format(Text179.Value, "YYYY-MM-DD") & "' " & _
          "         AND '" & Format(text181.Value, "YYYY-MM-DD") & "'"

    ' Execute the query
    Set RST = CurrentDb.OpenRecordset(SQL)

    ' If the query is valid and returned something, we recuperate the value
    If Not RST.BOF Then
        Text183.Value = RST!mySum
    End If

    ' Cleaning
    RST.Close
    Set RST = Nothing

End Sub

然后,对于您的2个日期文本框,创建 afterupdate 事件并调用其中的上一个子项:

Private Sub Text179_AfterUpdate()
    CheckSUM
End Sub

Private Sub Text181_AfterUpdate()
    CheckSUM
End Sub