Vba 添加数据到 table 覆盖其他数据

Vba adding data to table overwrites other data

我为工作制作了一个数据库,并制作了一个表格来向其中添加内容,这样工作人员就不会弄乱表格。它总是会添加数据,但有时它不会将其添加到底部,而是会覆盖另一行数据。有时甚至不是一整行,只是几列。 我尝试以两种不同的方式编写代码。

    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

我是一个包含的数据比另一个多。我在更新表单时使用了最上面的代码。

已解决:表单中的某些字段已绑定。因此,这些项目偶尔会被覆盖。一旦我取消绑定这些字段,它就会停止覆盖。

由于 .AddNew VBA 或 'Insert into' SQL 都不会覆盖 table 中的现有数据,原因是其他原因。如果表单上的控件是绑定的,那么只需在其中键入内容就会覆盖 table 中的基础记录。在您的情况下,由于您结合了绑定控件和未绑定控件,因此绑定控件导致了问题。

'sometimes'是什么意思?计算机不会有时做某事有时做其他事。计算机是确定性的,因此某些过程有效或无效。看起来它现在设置为未绑定。你能否使这个过程不受约束或受约束,而不是将两者混合?这应该可以解决问题。