Доступ к записи VBA 2016 .addnew сохраняет предыдущую запись

Я использую форму для отслеживания действий для моей работы. Форма также обрабатывает вложения. Все было хорошо, но с тех пор, как ИТ-специалисты перевели мою систему на Windows 10 и одновременно на Office 13, затем на 2016 год. Функция прикрепления работает неправильно. При добавлении вложения к новой записи он завершает VBA без ошибок, но сохраняет запись в предыдущей записи. Что-то изменилось в более поздних версиях, о чем я должен знать. Я использую достаточно простую программу для добавления файлов: -

Dim db As DAO.Database
Dim rsParent As DAO.Recordset2
Dim rsChild As DAO.Recordset2
Set db = CurrentDb
Set rsParent = Me.Recordset
rsParent.OpenRecordset
rsParent.Edit

Set rsChild = rsParent.Fields("Attachments").Value

rsChild.AddNew
rsChild.Fields("FileData").LoadFromFile FilePath
rsChild.Update
rsParent.Update

person NsC0001    schedule 07.03.2017    source источник
comment
Я забыл добавить дим в свой пост; Dim db As DAO.Database Dim rsParent As DAO.Recordset2 Dim rsChild As DAO.Recordset2   -  person NsC0001    schedule 07.03.2017
comment
Почему вы открываете набор записей для родителя, а затем используете .edit? Кажется, вы ничего с ним не делаете, никакие значения не применяются и не изменяются.   -  person Minty    schedule 07.03.2017
comment
Я удалил openrecordset для родителя, но он все еще не работает. Я могу добавлять вложения только в том случае, если запись сохранена без вложения, и я перехожу к другой записи, а затем возвращаюсь к записи, к которой хочу добавить вложение.   -  person NsC0001    schedule 08.03.2017
comment
Я сделал копию БД, удалил все данные и использовал форму ввода, чтобы снова добавить записи. Я завершил первую запись с вложением, так как это сработало нормально. Я добавил вторую запись и снова вложение, но то же самое произошло, вложение из второй записи было сохранено в первой записи.   -  person NsC0001    schedule 14.03.2017
comment
Это вполне может быть проблемой с Access 2016. Я все еще разрабатываю 2010, поэтому не могу проверить, проблема ли это. Почему бы просто не добавить запись, чтобы получить новый идентификатор, а затем добавить вложение к этому идентификатору?   -  person Minty    schedule 14.03.2017
comment
Ок нашел исправление. После перепробования всевозможных методов сохранения вложений в текущую запись безрезультатно. Мне пришлось принудительно подключить текущий набор записей, используя текущий идентификатор.:-Set db = CurrentDb strSQL = SELECT * FROM ATS WHERE ID= & ID Set rsParent = db.OpenRecordset(strSQL) Set rsChild = rsParent.Fields(Attachments) .Value rsParent.Edit rsChild.AddNew rsChild.Fields(FileData).LoadFromFile FilePath rsChild.Update rsParent.Update   -  person NsC0001    schedule 24.03.2017


Ответы (1)


Ок нашел исправление. После перепробования всевозможных способов сохранить вложения в текущую запись безрезультатно. Мне пришлось принудительно подключиться к текущему набору записей, используя текущий идентификатор.: -

Set db = CurrentDb
strSQL = "SELECT * FROM ATS WHERE ID=" & ID
Set rsParent = db.OpenRecordset(strSQL)
Set rsChild = rsParent.Fields("Attachments").Value
rsParent.Edit
rsChild.AddNew
rsChild.Fields("FileData").LoadFromFile FilePath
rsChild.Update
rsParent.Update
person NsC0001    schedule 24.03.2017