向表中添加数据的Vba会覆盖其他数据

时间:2016-04-14 16:03:52

标签: sql vba ms-access access-vba overwrite

我创建了一个工作数据库,并制作了一个表单来添加内容,因此工作人员不会弄乱表格。它将始终添加数据,但有时不会将其添加到底部,而是会覆盖另一行数据。有时甚至不是整行,只有几列。 我试过用两种不同的方式来做代码。

    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

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

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

2 个答案:

答案 0 :(得分:2)

既然没有.AddNew VBA或'插入' SQL将覆盖表中的现有数据,原因是其他原因。如果表单上的控件是BOUND,那么只需键入它们就会覆盖表中的基础记录。在您的情况下,由于您具有绑定和未绑定控件的组合,绑定控件会导致问题。

答案 1 :(得分:0)

'有时'意思?计算机有时不做事,有时做其他事情。计算机是确定性的,因此某些过程有效或无法正常工作。它看起来像现在没有绑定。你可以将这个过程解除绑定或绑定,而不是将它们混合在一起吗?这应该可以解决问题。