【发布时间】:2017-08-21 15:13:45
【问题描述】:
此查询不会在开始时运行。有人可以帮忙看看有什么问题吗? 如果有任何其他方法可以实现这一点,请提出建议。
strSQL1 = "SELECT * FROM PharmSales WHERE HospitalNo='" & Me.txtRegNo &
"' And TDate = #" & Format(Me.txtTDate, "M\/dd\/yyyy") &
"# AND SalesItem1 = '" & Me.txtSalesItem1 & "' And
PharmSalesID=
(SELECT MAX(PharmSalesID) FROM PharmSales)"
Set pr = db.OpenRecordset(strSQL1)
With pr
If Not .BOF And Not .EOF Then 'Ensure that the recordset contains records
.MoveLast
.MoveFirst
If .Updatable Then 'To ensure record is not locked by another user
.Edit 'Must start an update with the edit statement
If IsNull(![TotalPaid]) = True And Me.txtGrand_TotalPay.Value >= Me.txtSalesAmt1.Value Then
![DispQty1] = Nz(![DispQty1] + Me.txtSalesQty1.Value, 0)
.Update
ElseIf IsNull(![TotalPaid]) = False And (Me.txtGrand_TotalPay.Value - Me.txtSalesAmt1.Value) >= (txtGrand_TotalFee - Me.txtGrand_TotalPay.Value + Me.txtSalesAmt1.Value) Then
![DispQty1] = Nz(![DispQty1] + Me.txtSalesQty1.Value, 0)
.Update
Else: MsgBox ("Insufficient balance!")
End If
End If
End If
pr.Close
Set pr = Nothing
Set db = Nothing
End With
End Sub
【问题讨论】:
-
为什么你的意思是不运行?有什么错误吗?也可以使用参数,否则你很容易受到 sql 注入攻击检查这里:stackoverflow.com/questions/10352211/…
-
要考虑的要点:HospitalNo 和SalesItem1 都是文本,因为将它们包含在单引号中会将它们视为文本;仅当给定的 HospitalNo Date 和 SalesItem1 恰好与也具有 max(PharmsalesID) 的那些匹配时,这才会返回一些东西。
-
你的标题也谈到了设置最大值;但是您的 SQL 根据现有的最大值进行选择。你到底想做什么!