Добавить новую строку записи в таблицу с помощью формы Нажмите кнопку VBA Code - PullRequest
0 голосов
/ 22 сентября 2019

Я перехожу из Excel и начинаю использовать MS Access для создания моей личной базы данных комиксов.Я пытался создать код VBA для добавления новой записи в таблицу с помощью кнопки при нажатии.Я также пытаюсь добавить новую строку, но кажется, что она просто изменяет одну и ту же запись.

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

Private Sub cmdSaveNew_Click()
Dim R As Recordset

Set R = CurrentDb.OpenRecordset("SELECT * FROM [Issues]")

R.Addnew
R![Title] = Me.Title.Value
R.Update
R.Close
Set R = Nothing
DoCmd.Close
End Sub

1 Ответ

0 голосов
/ 22 сентября 2019

Ну, это не так много, что вы хотите добавить новую запись (ваш опубликованный код должен сделать это).РЕАЛЬНАЯ проблема в том, что вы хотите сделать с записью, которую вы только что добавили?И основана ли эта таблица (набор записей) на текущей связанной таблице форм?

Добавление новой записи в коде по волшебству не приведет к изменению, перемещению или переходу к текущей записи текущей формы.добавлено.Таким образом, это не «действительно», что вы хотите добавить новую строку в таблицу, но как вы хотите или планируете редактировать запись, которую вы только что добавили?

Если вы используете форму, которая связана напрямуюк таблице вопросов, то вам не нужно было бы использовать код для создания новой строки данных, но ЛУЧШЕ - это перейти / принудительно / переместить текущую форму в новую запись, которая позволит вам затем редактировать данные.

Таким образом, вы можете выполнить это:

DoCmd.GoToRecord acDataForm, , acNewRec

В приведенном выше примере ваша текущая форма будет отправлена ​​в новый reocrd, после чего вы сможете теперь вводить данные в форму.

Как просто добавить строку в выпуски?Ну, реальная проблема в том, что / когда / где / почему вы хотите использовать эту новую строку.Если вы запустите свой пример кода, а затем откроете таблицы из пользовательского интерфейса Access, вы должны увидеть новую строку данных.Но напрашивается реальный вопрос о том, что вы хотите делать с этой новой строкой данных.поля со списком или текущая форма, которую вы редактируете, НЕ узнают об этой новой строке, как и поля со списком.

Итак, контекст вашей цели здесь ВСЕ в отношении того, какой подход вы должны и хотите сделать.Таким образом, ваш код в опубликованном виде должен добавить новую строку данных, но текущая форма и элементы управления не будут знать или не смогут использовать эту новую строку данных до тех пор, пока вы не заметите или не объясните, что вы хотите делать дальше.Таким образом, вы можете добавить новую строку с вашим кодом, но ДЕЙСТВИТЕЛЬНО, какая задача сейчас под рукой, и хотите ли вы сделать с этой новой строкой данных?

Если у вас есть существующая форма, и произнеситеполе со списком, и вы хотите из выпадающего списка выбрать «проблему», тогда, конечно, управление списком доступных вариантов для поля со списком может управляться списком, чтобы упростить ввод данных.И если выбранный вами вопрос находится не в поле со списком (этот выбор определяется таблицей проблем), то вы бы использовали поле со списком, а не в списке событий, и предложили бы пользователю «вы хотите добавить?».И если пользователь нажимает «да», то вы можете запустить свой код, чтобы добавить одну новую «проблему», и тогда эта новая проблема появится в поле выбора в качестве выбора.

Итак, проблема в доступечто у вас так много вариантов для выполнения задачи, но пока не будут объяснены фактическая задача и рабочий процесс, малюсенький фрагмент кода вряд ли решит вашу задачу, но, что еще хуже, не обеспечит фактическое решение, которое вы ищете.

Это «почему» в комментариях, люди спрашивают, зачем вам код, когда связанные формы в большинстве случаев могут добавлять строки данных, и вам не нужно писать код для вставки данных в таблицу.Но, опять же, данный контекст здесь заключается в том, что вы хотите добавить новую строку данных, но неясно, связана ли форма, над которой вы работаете, с этой таблицей, или таблица проблем - это отдельная таблица, отличная от текущей формы.,Таким образом, для текущей формы и таблицы привязки данных, как правило, вам не нужен код для вставки строк данных.И, возможно, таблица проблем - это связанная дочерняя таблица с текущей формой + таблицей.В этом случае будет использоваться подформа, и снова вам не нужно будет писать код для вставки строк данных.Итак, таблица проблем просто управляет комбинированным списком?Или таблица проблем связана с данными текущей формы и всех ее полей?

...