Получение ошибки 3134 при закрытии формы t когда она пуста
Private Sub Form_Close() Dim sSQL, stringSQL As String Dim rst As DAO.Recordset sSQL = "SELECT BarCode, [Goods Name] FROM tblInventory WHERE BarCode='" & Me.ID & "'" Set rst = CurrentDb.OpenRecordset(sSQL) If rst.EOF Then stringSQL = "INSERT INTO tblInventory(BarCode,[Goods Name],Unit,[Unit Price],[Initial Stock],[Current Stock],[Exit Item]) values('" & Me.ID & "','" & Me.Description & "','" & Me.Unit & "'," & Replace(Format(Me.Price, "0.00"), ",", ".") & "," & Me.Amount & "," & Me.Amount & ",0)" DoCmd.SetWarnings False DoCmd.RunSQL (stringSQL) DoCmd.SetWarnings True Else stringSQL = "UPDATE tblInventory SET [Current Stock]=[Current Stock]+" & Me.Amount & " WHERE BarCode='" & Me.ID & "'" DoCmd.SetWarnings False DoCmd.RunSQL (stringSQL) // the error is at this location// DoCmd.SetWarnings True End If rst.Close End Sub Private Sub ID_AfterUpdate() Dim sSQL As String Dim rst As DAO.Recordset sSQL = "SELECT BarCode, [Goods Name], Unit, [Unit Price] FROM tblInventory WHERE BarCode='" & Me.ID & "'" Set rst = CurrentDb.OpenRecordset(sSQL) If rst.EOF Then MsgBox "New Parts" Me.Description.SetFocus Else Me.Description = rst(1).Value Me.Unit = rst(2).Value Me.Price = rst(3).Value Me.Amount.SetFocus End If rst.Close End Sub
Что я уже пробовал:
Я также заметил, что если я добавлю только 1 элемент, он работает. но не позволяет вводить другой элемент в таблицу. Я должен закрыть форму, прежде чем она добавит еще один элемент. Это база данных Access, которую я использую в Access 2010, она разрабатывается для отслеживания инвентаря. У меня есть таблица, которая получает входящий инвентарь, jave принимает входящий и перемещает его в таблицу с именем tblinventory, когда я вхожу в новый элемент, он делает то, что должен делать. однако, если я пытаюсь ввести другой элемент, этот элемент не попадает в tblinventory, он отображается на tblincoming. Я также заметил, что если я передумаю и закрою форму ввода для входящих, я получаю сообщение об ошибке 3134, форма на данный момент пуста. Я пытался изменить код, но они получали ошибку после ввода каждого элемента. поэтому вернулся к исходной ошибке. когда я отлаживаю, он показывает в строке DoCmd.RunSql (stringSQL), я прокомментировал строку в коде.
Jochen Arndt
Ошибка 3134 - это "синтаксическая ошибка в операторе INSERT INTO".
Вы сказали нам, что ошибка возникает во время обновления, где я ожидал бы другую ошибку, такую как 3144 ("синтаксическая ошибка в операторе обновления").
В любом случае, вы должны распечатать stringSQL
чтобы увидеть, что передается, и проверить его на наличие ошибок.