Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 日期之间的DSUM标准不起作用_Ms Access_Vba - Fatal编程技术网

Ms access 日期之间的DSUM标准不起作用

Ms access 日期之间的DSUM标准不起作用,ms-access,vba,Ms Access,Vba,我尝试了论坛上的每一个建议,但是我的代码越来越乱了 我使用的是Microsoft Access(Office 365)。我的计算机是法语,我安装了英语作为第二语言 我想查找tblEtsySales今年第二季度的所有销售记录。我正在使用DSUM对字段TotalReceived中的记录求和,并希望按日期进行筛选。我得到了一个意外的返回量,而它应该是零 这是我的密码: Dim Q2 As Currency Dim Quarter2 As String Quarter2 = "[Sale Date]

我尝试了论坛上的每一个建议,但是我的代码越来越乱了

我使用的是Microsoft Access(Office 365)。我的计算机是法语,我安装了英语作为第二语言

我想查找tblEtsySales今年第二季度的所有销售记录。我正在使用DSUM对字段TotalReceived中的记录求和,并希望按日期进行筛选。我得到了一个意外的返回量,而它应该是零

这是我的密码:

Dim Q2 As Currency
Dim Quarter2 As String

Quarter2 = "[Sale Date] BETWEEN #01/04/2017# And #30/06/2017#"

If IsNull(Q2 = DSum("[TotalReceived]", "tblEtsySales", Quarter2)) = True Then
    MsgBox "No data for the second quarter."
    txtQ2.Value = ""
Else
    Q2 = DSum("[TotalReceived]", "tblEtsySales", Quarter2)
    txtQ2.Value = Q2
End If

您可能最好将数据参数传递给一个过程,以使其更灵活,但如果您只需要将第2季度的数据传递到永久性中

Dim Q2 As Double
Dim Quarter2 As String

Quarter2 = "[Sale Date] BETWEEN #01/04/2017# And #30/06/2017#"
Q2=DSum("[TotalReceived]", "tblEtsySales", Quarter2)

if Q2=0 then
    MsgBox "No data for the second quarter."
    txtQ2.Value = ""
else
    txtQ2.Value=Q2
end if
您的表达式
#01/04/2017#
被理解为2017-01-04

这样做:

Dim Q2 As Currency
Dim Quarter2 As String
Dim Date1 As Date
Dim Date2 As Date

Date1 = #04/01/2017# 
Date2 = #06/30/2017# ' You can type it differently, but VBA will correct it.

Quarter2 = "[Sale Date] BETWEEN #" & Format(Date1, "yyyy\/mm\/dd") & "# And #" & Format(Date2, "yyyy\/mm\/dd") & "#"

Q2 = DSum("[TotalReceived]", "tblEtsySales", Quarter2)

If Q2 = 0 Then
    MsgBox "No data for the second quarter."
    txtQ2.Value = Null
Else
    txtQ2.Value = Q2
End If

嗨,谢谢你的回答。不幸的是,它不起作用。我在做4个季度,年份会自动变化,但我已经检查了所有的工作,似乎只是日期?销售日期总计收到2017年1月10日16,50欧元2017年1月1日69,63欧元2017年3月22日12,40欧元2017年3月3日69,63欧元这些是实际数字(我知道的销售额不多!)我得到了第一季度的正确结果,但第二季度和所有其他季度的结果都是98.53欧元。我不知道这是从哪里来的。它起作用了,谢谢你,太好了。:)它不喜欢Q2=Dsum等。。。当Dsum返回0)所以我做了这个…'Dim Q2作为货币Dim Quarter2作为字符串Dim Date 1作为日期Dim Date 2作为日期Date 1=#4/1/2017#Date 2=#6/30/2017#Quarter2=“[销售日期]介于#”和#格式(Date 1,“yyyy\/mm\/dd”)、#和#格式(Date 2,“yyyyyyy\/mm\/dd”)、#和#如果为空(DSum)([TotalReceived],“TbSysales”),Q2=0,则为真[TotalReceived],“tblEtsySales”,第二季度结束,如果txtQ2.Value=Q2'