2

У меня есть форма, сделанная в MS Access и VBA. У меня есть этот код во вставке с заданным по умолчанию при создании кнопки DoCmd.GoToRecord , , acNewRec Моя форма связана с таблицей и связывает таблицы с базой данных SQL. Он успешно добавлен, если в таблице еще нет записей, но если в таблице уже есть запись, а форма была закрыта, открыта снова и снова добавлены новые данные, он больше не будет вставлять новые строки записи, вместо этого он просто обновляет последнюю запись.

После того, как форма вызвана, я нажимаю новую кнопку, которая очищает все значения текстового поля, а затем вводит новую запись и нажимает кнопку добавления, что случилось, она просто обновит последнюю запись. и у меня есть идентификатор автоматического увеличения. Кто-нибудь испытывает это?

код на моей кнопке добавления это

Private Sub btnAdd_Click()
On Error GoTo Err_CustomerNew_Click


    DoCmd.GoToRecord , , acNewRec

Exit_CustomerNew_Click:
    Exit Sub

Err_CustomerNew_Click:
    MsgBox Err.Description
    Resume Exit_CustomerNew_Click

End Sub

сценарий не задействован, только форма связана с таблицей, связанной с базой данных sql. а также источником данных формы я использую запрос, а не таблицу напрямую. например Select * из таблицы по порядку имен по идентификатору desc.

2 ответа2

0

Привет, я нашел решение, и я не знаю, если это правильный ответ, так как у меня нет опыта в VBA. это поможет при вставке новых записей со связанными формами в связанную таблицу SQL с автоинкрементным значением идентификаторов. Когда форма открыта с уже существующими записями, идентификатор, который был захвачен формой, является первым идентификатором или последним идентификатором в таблице. это обновит запись всякий раз, когда вы нажимаете кнопку добавления с помощью этой команды DoCmd.GoToRecord , , acNewRec Это зависит от того, используете ли вы по возрастанию или убыванию по вашему запросу, какой из них он обновит запись и не вставит. Итак, чтобы успешно вставить его без обновления существующей записи, форма должна создать новый набор идентификаторов для вставки. все, что вам нужно сделать, это создать событие on_load и добавить в него этот код DoCmd.GoToRecord , , acNewRec чтобы при загрузке нового набора записей форма получала и вставляла его.Надеюсь, поможет.

0

Если это сценарий, который вы пытаетесь написать, опубликуйте код, и я постараюсь вам помочь. Если сценарий изначально был в MSAccess, пространство имен может немного отличаться. Например, если код для данных не похож на элемент обратной передачи из формы в SQL (по какой-либо причине), или действие из поля находится где-то помимо события нажатия кнопки, оно не будет публиковать ваши данные в базе данных. и может фактически удалить вашу запись из поля формы в зависимости от того, как написан ваш скрипт. Надеюсь, это поможет, ClaireW

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .