2015-03-10 2 views
0

Я использую MS Access 2007. У меня есть запрос под названием qryUPDATESTOCKS, который уменьшает запасы от продуктов таблицы на основе количества из таблицы.Введите значение параметра

Запрос: UPDATE tblPRODUCTS SET tblPRODUCTS.Stock = tblPRODUCTS.Stock-tblORDER.Quantity WHERE tblORDER.ProductID=tblPRODUCTS.ProductID;

Чтобы выполнить этот запрос, когда заказ будет сохранен, я добавил действие OpenQuery в мою кнопку сохранения, которая запускает запрос.

Но когда я нажимаю кнопку сохранения, появляется диалоговое окно с надписью «Введите значение параметра». Как я могу предотвратить его появление?

+0

Вам нужно сделать это в VBA, или если вы хотите сделать это в Query, вам необходимо передать int номер заказа и использовать ** SubQuery **, чтобы получить количество элементов для удаления. – PaulFrancis

+0

@PaulFrancis Я хочу сделать это в запросе, как использовать SubQuery? – francisjessie

+0

Основываясь на логике, вы будете изменять значение запаса для всех продуктов с одинаковым идентификатором. В коде есть что-то подозрительное. Проверьте ответ, посмотрите, поможет ли это! – PaulFrancis

ответ

0

Вам необходимо выполнить запрос действий в VBA, что-то вроде

Private Sub orderSaveButtonName_Click() 
    Dim totAvailable As Long 

    totAvailable = Nz(DSum("Stock", "tblPRODUCTS", "tblPRODUCTS.ProductID = '" & _ 
          Me.ProductID & "'"), 0) 

    CurrentDB.Execute "UPDATE tblProducts SET Stock = " & totAvailable - Me.Quantity & _ 
         " WHERE tblPRODUCTS.ProductID = '" & Me.ProductID & "'" 
End Sub 

Или, если вы хотите сделать это в запросе, вы должны передать номер заказа и использовать подзапрос, чтобы получить номер предметов, которые нужно убрать. Это может быть сложно, используя VBA - прямое решение.

+0

ok Я попробую его – francisjessie

+0

он говорит: «Выражение, введенное вами как параметр запроса, вызвало эту ошибку:« prod001 »тип данных ProductID из tblPRODUCTS в тексте должен ли я изменить тип данных? @PaulFrancis – francisjessie

+0

Если это тип текста, да, вам нужно заключить их в одинарные кавычки, проверьте мой обновленный ответ. – PaulFrancis

Смежные вопросы