Vba при добавлении данных в таблицу перезаписывает другие данные

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

    CurrentDb.Execute " INSERT INTO [Service Calls] " _
    & "([Project Name], [Phone Number], [email], [Source], [Service Address], [Zip Code], [Date of Service], [Type of Call], [Technician], [Ticket Number], [Invoice Number], [Total Billed], [Description of Work]) VALUES " _
    & "('" & Me.proj & "', '" & Me.phone & "', '" & Me.email & "', '" & Me.source & "', '" & Me.address & "', '" & Me.zip & "', '" & Me.doS & "', '" & Me.toC & "', '" & Me.tech & "', '" & Me.ticketNum & "', '" & Me.invoiceNum & "', '" & Me.billed & "', '" & Me.work & "');"
    CurrentDb.Close

а также

Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Service Calls")
With rst
 .AddNew
 .Fields("Project Name") = Me.proj
 .Fields("Service Address") = Me.address
 .Fields("Date of Service") = Me.doS
 .Fields("Technician") = Me.tech
 .Fields("Total Billed") = Me.billed
 .Fields("Zip Code") = Me.zip
 .Fields("Description of Work") = Me.work
 .Fields("Type of Call") = Me.toC
 .Fields("Invoice Number") = Me.invoiceNum
 .Fields("Ticket Number") = Me.ticketNum
 .Update
 End With
  rst.Close
  Set rst = Nothing

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

Решено: Некоторые поля в форме были связаны. Таким образом, эти элементы иногда перезаписывались. Как только я развяжу эти поля, перезапись прекратится.


person Chris    schedule 14.04.2016    source источник
comment
Ни .AddNew, ни «Вставить в» не будут перекрывать существующие данные в таблицах. Являются ли элементы управления в вашей форме ПРИВЯЗАННЫМИ или НЕСВЯЗАННЫМИ? Если BOUND, я вполне уверен, что проблема в том, что ваша форма отображает строку данных, и кто-то вводит в эту строку, которая изменяет данные. Есть ли другой код в другом месте, который мог бы это сделать?   -  person Wayne G. Dunn    schedule 14.04.2016
comment
Некоторые СВЯЗАНЫ, некоторые НЕ СВЯЗАНЫ. Я РАЗВЯЗУ их все и посмотрю, исправит ли это ситуацию. Есть другой код, но он только подтягивает запрос, поэтому я не думаю, что он что-то делает.   -  person Chris    schedule 14.04.2016
comment
@WayneG.Dunn добавьте ответ на UNBOUND вещи в форму, чтобы я мог сказать, что вы дали мне ответ. Спасибо.   -  person Chris    schedule 14.04.2016
comment
@WayneG.Dunn: Но вопрос навсегда останется нерешенным. Ответ был бы лучше. (@Chris, ты тоже можешь написать ответ).   -  person Andre    schedule 14.04.2016


Ответы (2)


Поскольку ни .AddNew VBA, ни SQL «Вставить в» не будут перекрывать существующие данные в таблицах, причина в другом. Если элементы управления в форме связаны, то простой ввод в них приведет к перекрытию базовой записи в таблице. В вашем случае, поскольку у вас была комбинация связанных и несвязанных элементов управления, связанные элементы управления вызвали проблему.

person Wayne G. Dunn    schedule 14.04.2016

Что значит «иногда»? Компьютеры иногда не делают что-то, а иногда делают что-то другое. Компьютеры детерминированы, поэтому какой-то процесс работает или не работает. Похоже, что сейчас он настроен как несвязанный. Можете ли вы сделать этот процесс несвязанным или связанным, а не смешивать то и другое? Это должно решить проблему.

person ASH    schedule 02.05.2016