У меня есть сложная база данных, включающая человеческие останки, поэтому формы доступа для ввода данных также довольно сложны.У меня есть несколько подчиненных форм (Skeleton_index, Element_index и несколько других).Две подформы, которые я назвал по имени, отправляют данные в соответствующие поля (element_link, skeleton_link) в несвязанной главной форме, откуда данные используются другими формами.Для Skeleton_index пользователь должен ввести имя человека, и оно сразу же появится в поле skeleton_index.У меня проблема в том, что я не хочу, чтобы пользователь вводил данные первичного ключа для Element_index, как это должно происходить в auto_increment.Это проблема, потому что автоматически увеличенное значение в Element_id не появляется в поле element_link сразу.Чтобы показать это, пользователь должен создать новый элемент и затем вернуться к тому, который он редактировал.Я хочу избежать этого.
Я хочу обновить текстовое поле Element_id до нового первичного ключа auto_increment, когда он получит фокус.Код VBA должен извлечь последний первичный ключ из таблицы Element_index в MySQL (InnoDB), добавить один к нему и затем обновить значение в поле Element_id в форме Element_index.
Это моя попытка, и это простоне удается.
Private Sub Element_id_GotFocus()
SQL = "SELECT LAST_INSERT_ID();"
lastID = DoCmd.RunSQL(SQL)
newID = Int(lastID) + 1
Element_id.Value = newID
End Sub
РЕДАКТИРОВАТЬ:
База данных будет иметь одного пользователя в первом случае, но может быть больше в будущем.
РЕШЕНИЕ: я добавилкнопка с двумя макросами: одна, которая сохраняет вставленную запись, и вторая, которая обновляет форму.Нет необходимости в сложных VBA.