Как сделать цикл, используя несколько условий для кнопки отправки?
Я пишу функцию, которая проверяет, равна ли уплаченная сумма или больше количеству выбранных элементов, если они проверены. Для этого примера есть 10 элементов с 10 флажками. Я мог бы проверить один или несколько ящиков в любом другом.Если элемент или более удовлетворяет условию, он очищается, в противном случае он остается.
Что я уже пробовал:
Public Sub processItem1() Dim db As DAO.Database Dim pr As DAO.Recordset, so As DAO.Recordset Dim strSQL1 As String Dim strSQL2 As String Set db = CurrentDb strSQL1 = "SELECT * FROM PharmSales WHERE PharmSalesID= (SELECT MAX(PharmSalesID) FROM PharmSales WHERE HospitalNo='" & Me.txtRegNo & "' And TDate = #" & Format(Me.txtTDate, "M\/dd\/yyyy") & "# AND SalesItem1 = '" & Me.txtSalesItem1 & "')" strSQL2 = "SELECT * FROM tblItem WHERE ItemName = '" & Me.txtSalesItem1 & "'" Set pr = db.OpenRecordset(strSQL1) Set so = db.OpenRecordset(strSQL2) 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 ![DispQty1] = Nz(![DispQty1] + Me.txtSalesQty1.Value, 0) .Update End If End If pr.Close 'Make sure you close the recordset.. Set pr = Nothing '...and set it to nothing Set db = Nothing End With With so 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 ![Stock_Out] = Nz(![Stock_Out] + Me.txtSalesQty1.Value, Me.txtSalesQty1.Value) ![SO_Date] = Me.txtTDate ![Stock_In] = Nz(![Stock_In] + 0, 0) .Update 'And finally we will need to confirm the update End If End If so.Close 'Make sure you close the recordset.. ExitSub: Set so = Nothing '...and set it to nothing Set db = Nothing End With End Sub
Второй Пункт:
Public Sub processItem2() Dim db As DAO.Database Dim pr As DAO.Recordset, so As DAO.Recordset Dim strSQL1 As String Dim strSQL2 As String Set db = CurrentDb strSQL1 = "SELECT * FROM PharmSales WHERE PharmSalesID= (SELECT MAX(PharmSalesID) FROM PharmSales WHERE HospitalNo='" & Me.txtRegNo & "' And TDate = #" & Format(Me.txtTDate, "M\/dd\/yyyy") & "# AND SalesItem2 = '" & Me.txtSalesItem2 & "')" strSQL2 = "SELECT * FROM tblItem WHERE ItemName = '" & Me.txtSalesItem2 & "'" Set pr = db.OpenRecordset(strSQL1) Set so = db.OpenRecordset(strSQL2) 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 ![DispQty2] = Nz(![DispQty2] + Me.txtSalesQty2.Value, 0) .Update End If End If pr.Close 'Make sure you close the recordset.. Set pr = Nothing '...and set it to nothing Set db = Nothing End With With so 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 ![Stock_Out] = Nz(![Stock_Out] + Me.txtSalesQty2.Value, Me.txtSalesQty2.Value) ![SO_Date] = Me.txtTDate ![Stock_In] = Nz(![Stock_In] + 0, 0) .Update 'And finally we will need to confirm the update End If End If so.Close 'Make sure you close the recordset.. ExitSub: Set so = Nothing '...and set it to nothing Set db = Nothing End With End Sub
OriginalGriff
И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
Какая помощь вам нужна?
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]