Private Function SynTrsac(ByVal intAction As Integer) As Boolean
On Error GoTo Handle_Err
Dim dteClose As Date
Dim dbs As Database
Dim rstblARItem As Recordset
Dim strSQL As String
Dim curAdjtAmt As Currency, curAdjtAmount As Currency
Dim DAT As Date
Set dbs = CurrentDb()
strSQL = "SELECT tblAR1.ARDate, tblARItem1.* " _
& "FROM tblAR1 INNER JOIN tblARItem1 ON tblAR1.ARNum =tblARItem1.ARNum " _
& "WHERE tblAR1.ARNum = '" & Me.ARNum & "' ;"
Set rstblARItem = dbs.OpenRecordset(strSQL, dbOpenSnapshot, dbSeeChanges)
While Not rstblARItem.EOF
Select Case intAction
Case csRollbackRec
DAT = Me.ARDate
curAdjtAmt = -Nz(rstblARItem!Coll, 0)
curAdjtAmount = -Nz(rstblARItem!Collection, 0)
Case csCommitRec
curAdjtAmt = Nz(rstblARItem!Coll, 0)
curAdjtAmount = Nz(rstblARItem!Collection, 0)
End Select
strSQL = "UPDATE tblSale SET tblSale.KPDate = #" & Me.ARDate & "#,tblSale.YKAmt = Round([tblSale].[YKAmt]+" & curAdjtAmt & ", 2),tblSale.QKKAmt = Round([tblSale].[QKKAmt]-" & curAdjtAmt & ", 2)" _
& "WHERE tblSale.SaleNum = '" & rstblARItem!SaleNum & "' ;"
ExecuSQL strSQL
strSQL = "UPDATE tbwSale SET tbwSale.KPDate = #" & Me.ARDate & "#,tbwSale.YKAmt = Round([tbwSale].[YKAmt]+" & curAdjtAmt & ", 2),tbwSale.QKKAmt = Round([tbwSale].[QKKAmt]-" & curAdjtAmt & ", 2) " _
& "WHERE tbwSale.SaleNum = '" & rstblARItem!SaleNum & "' ;"
ExecuSQL strSQL
strSQL = "UPDATE tblSaleItem SET " _
& "[YKAmt] = (Nz([YKAmt], 0) + " & curAdjtAmt & "), " _
& "[QKKAmt] = (Nz([QKKAmt], 0) - " & curAdjtAmt & ") " _
& "[KPDate] = IIf([KPDate] <= " & CDbl(rstblARItem!ARDate) & "," & CDbl(rstblARItem!ARDate) & ", [KPDate]) " _
& "WHERE SaleNum = '" & rstblARItem!SaleNum & "' AND RowNo = " & rstblARItem!RowNoA & " "
ExecuSQL strSQL
strSQL = "UPDATE tbwSaleItem SET " _
& "[YKAmt] = (Nz([YKAmt], 0) + " & curAdjtAmt & "), " _
& "[QKKAmt] = (Nz([QKKAmt], 0) - " & curAdjtAmt & ") " _
& "[KPDate] = IIf([KPDate] <= " & CDbl(rstblARItem!ARDate) & "," & CDbl(rstblARItem!ARDate) & ", [KPDate]) " _
& "WHERE SaleNum = '" & rstblARItem!SaleNum & "' AND RowNo = " & rstblARItem!RowNoA & " "
ExecuSQL strSQL
rstblARItem.MoveNext 'advance to the next item on the current Account Receivable Voucher
Wend
rstblARItem.Close: Set rstblARItem = Nothing
'Synchornize transaction with Balance in tblClient ***********************************************************
Set dbs = Nothing
Handle_Exit:
SynTrsac = True
Exit Function
Handle_Err:
Select Case Err
Case 2501, 3021
' 2501 - DoCmd method action was canceled.
' 3021 - No current record, to trap the rsChild0.MoveFirst
Resume Next
Case Else
Call ErrMsgBox(Me.Name & ".SynTrsac(" & Switch(intAction = 0, "csRollbackRec", intAction = 1, "csCommitRec") & ")", Err.Number, Err.Description)
SynTrsac = False
End Select
End Function
运行就是 & "[KPDate] = IIf([KPDate] <= " & CDbl(rstblARItem!ARDate) & "," & CDbl(rstblARItem!ARDate) & ", [KPDate]) " _
这一句语法错误,KPDate与ARDate两个都是日期类型,表里面的设置也是一样,请大神们指教下,该怎么改