构成SQL语句时日期直接使用是不行的,即使变量是日期型,但构成SQL语句时还是会被当成字符串处理的,要想把字符串转换称日期型数据,需要用“#”括起来,例如下面这个统计过程:
Private Sub btnOK_Click()
Dim StartDate As Date, EndDate As Date
Dim strSQL, strItem As String
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete from tblTransSum"
'统计日期
StartDate = Nz(Me.txtStartDate)
EndDate = Nz(Me.txtEndDate)
If StartDate = 0 or EndDate = 0 Then
MsgBox "请先选择日期,然后点击统计按钮!", vbCritical, "提示"
Exit Sub
End If
'统计单位
If Me.frmItem = 1 Then
strItem = "FAbbr"
Else
strItem = "CAbbr"
End If
'统计
strSQL = "Insert into tblTransSum (Item,ExtraFee,DeductFee,SettleFee,CExtraFee,CDeductFee,CSettleFee) Select " & strItem
strSQL = strSQL & ",sum(ExtraFee),sum(DeductFee),sum(SettleFee),sum(CExtraFee),sum(CDeductFee),sum(CSettleFee) from tblTransport"
strSQL = strSQL & " Where AuditState and AuditDate Between #" & StartDate & "# and #" & EndDate & "# Group by " & strItem
DoCmd.RunSQL strSQL
'插入一条合计
strSQL = "Insert into tblTransSum (Item,ExtraFee,DeductFee,SettleFee,CExtraFee,CDeductFee,CSettleFee) Select '合计'"
strSQL = strSQL & ",sum(ExtraFee),sum(DeductFee),sum(SettleFee),sum(CExtraFee),sum(CDeductFee),sum(CSettleFee) from tblTransSum"
'刷新显示
RequeryDataObject Me.sfrList
End Sub