ошибка синтаксиса запроса ... - PullRequest
0 голосов
/ 01 марта 2012

У меня есть следующая кодировка для кнопки.Моя проблема заключается в том, что запрос «SQLStory» приходит с ошибкой, что он пропускает точку с запятой.

В поле со списком содержится имя элемента и упорядочено по идентификатору продукта, а SQLStory должен переместить всеэлементы из TblTotalSale в таблицу TblSaleStore.Любые идеи, где ошибка?

Private Sub StockOK_Click()
Dim SQLDelete1 As String
Dim SQLDelete2 As String
Dim SQLUpdate As String
Dim SQLStory As String

SQLDelete1 = "DELETE * FROM TblStock WHERE TblStock.ProductID = " & CboStockItem.Value
SQLDelete2 = "DELETE * FROM TblTotalSale WHERE TblTotalSale.ProductID = " & CboStockItem.Value
SQLUpdate = "INSERT INTO TblStock (ProductID, StockLevel) VALUES ( " & Me.CboStockItem.Value & "," & Me.TxtStockValue & " )"
SQLStory = "INSERT INTO TblSaleStore (ProductID) VALUES (TblTotalSale.ProductID) FROM TblTotalSale WHERE TblTotalSale.ProductID = " & Me.CboStockItem.Value


If IsNull(Me.TxtStockValue) Then MsgBox "Please Select An Item To Update Stock And Ensure A Value Has Been Entered" Else:
DoCmd.RunSQL SQLDelete1
DoCmd.SetWarnings False
DoCmd.RunSQL SQLStory
DoCmd.RunSQL SQLDelete2
DoCmd.RunSQL SQLUpdate
DoCmd.SetWarnings True


End Sub

Другая проблема, с которой я сталкиваюсь с этим кодом, состоит в том, что блок doCmd происходил независимо от того, было ли поле Txt TxtStockValue нулевым или нет, и я только хочу, чтобы это произошло, еслиполе не является нулевым ... Любые идеи на эту часть тоже?

Спасибо

Сэм

1 Ответ

2 голосов
/ 01 марта 2012

Значения только для этого, такие значения, как 'abc' или 123, вам нужно SELECT:

SQLStory = "INSERT INTO TblSaleStore (ProductID) " _
         & "SELECT (TblTotalSale.ProductID) FROM " _
         & "TblTotalSale WHERE TblTotalSale.ProductID = " _
         & Me.CboStockItem.Value

Но вышеупомянутое странно, потому что у вас уже есть идентификатор в комбо, так что, как я сказал в вашем предыдущем посте по теме:

SQLStory = "INSERT INTO TblSaleStore (ProductID) " _
         & "VALUES ( " &  Me.CboStockItem.Value & " )"

Кроме того, вам было предложено использовать debug.print при использовании SQL, это позволит вам просмотреть SQL и вставить его в окно конструктора запросов, чтобы увидеть, работает ли он. Строка debug.print может быть закомментирована, когда все работает. Когда вы не знакомы с SQL, можно многое сказать об использовании окна конструирования запросов для построения ваших запросов. Затем вы можете вырезать SQL из SQL View, добавить кавычки и т. Д.

РЕДАКТИРОВАТЬ вопрос 2 часть

Dim db As Database
Set db = CurrentDB

If IsNull(Me.TxtStockValue) Then 
    MsgBox "Please Select An Item To Update Stock " _
           & "And Ensure A Value Has Been Entered" 
Else
   db.Execute SQLDelete1, dbFailOnError
   ''DoCmd.SetWarnings False
   db.Execute SQLStory, dbFailOnError
   db.Execute SQLDelete2, dbFailOnError
   db.Execute SQLUpdate, dbFailOnError
   ''DoCmd.SetWarnings True
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...