MS Access VBA проблема удаления записи из подчиненной формы - PullRequest
0 голосов
/ 08 октября 2019

У меня есть код за кнопкой, которая удаляет запись из подчиненной формы. Код работает, когда я впервые открываю родительскую форму. Однако, если я выберу другую запись для удаления, она не будет работать снова после первого раза. Я должен закрыть форму и снова открыть ее, чтобы код работал, и опять же, он работает только один раз.

Я пытался закомментировать весь другой код в других процедурах, чтобы изолировать проблему (например, Form_Open), но не смог найти причину проблемы.

Код:

Dim LResponse As Integer

LResponse = MsgBox("Do you wish to Delete this local Vendor?", vbYesNo, "Delete Local Vendor")

If LResponse = vbYes Then

    Me.VendorPrograms_subform.Form.Recordset.Delete
    Me.VendorPrograms_subform.Form.Recordset.MoveNext

Else
   DoCmd.CancelEvent
End If

Итак, код работает, но, как я могу судить, что-то еще вызывает конфликт, как я могу сказать.

Я также пробовал SQL:

Dim sSQL As String

sSQL = "DELETE * FROM VendorPrograms WHERE VendorId# = " & "Me!VENDOR#"
DoCmd.RunSQL sSQL
Me!VendorPrograms_subform.Requery

Этот код не выдает ошибку, но запись не удаляется. Неправильный синтаксис, я догадываюсь?

1 Ответ

0 голосов
/ 08 октября 2019

Таким образом, проблема оказалась в запросах в форме и подчиненной форме. Мне пришлось упростить и включить основную таблицу для основной формы и вложенную таблицу для подчиненной формы. Раньше, если я правильно помню, я заметил, что не могу вводить данные в формы, если запрос включает более одной таблицы. Это изменилось, и теперь несколько таблиц в запросах будут работать для ввода данных, однако, похоже, что удаление записей из подчиненных форм частично запрещено (я смог удалить одну запись после открытия формы, но дальнейшие удаления не работают), если несколькотаблицы используются в запросах. Может быть, у кого-то есть дополнительная информация об этом?

Вот код, который работал:

Dim LResponse As Integer

LResponse = MsgBox ("Хотите удалить этого локального поставщика?"? ", vbYesNo," Удалить локального поставщика ")

Если LResponse = vbYes, то

Me![VendorPrograms subform1].Form![VendorId#].SetFocus
Me.[VendorPrograms subform1].Form.Recordset.Delete
Me.[VendorPrograms subform1].Form.Recordset.MoveNext
Me.Requery

Иначе DoCmd.CancelEvent End If

...