我正在尝试创建一个向表中添加数据的按钮。虽然我只想和一个领域合作。
我用这个atm:
rec.AddNew
rec("WorkOrder") = Me.ProjectAddWorkOrderTxt
rec.Update
使用3个不同的按钮更改该字段中的3个其他列。每次我按下按钮将信息添加到表中时,它都会创建一个新字段,其中的数据位于正确的列下。为什么显而易见,因为rec.AddNew。它创造了一个新的领域。
有没有办法检查表中是否有字段,如果有,它只是编辑了一个字段,如果没有,它会创建一个新字段?
有一个主要表格,上面有5个按钮;它弹出5种不同的形式。这些表单有1个文本框和1个按钮。没有任何表格与任何记录来源绑定。
我想要的是能够在文本框中输入数据,并且当您按下该按钮时,它会将该数据添加到临时表单中。同时它关闭了表格,再次显示主要表格。
然后,当我按下主窗体上的另一个按钮时,它会抓取当前在temptable上的所有信息,并将其放入维护中。然后它删除temptable上的所有数据。
-
这是按钮的完整代码,答案在additon下方
Private Sub ProjectWorkOrderBackBtn_Click()
Dim db As Database
Dim rec As DAO.Recordset
Set db = CurrentDb
Set rec = db.OpenRecordset("Select * from ProjectsTempT")
rec.FindFirst "WorkOrder='" & Me.ProjectAddWorkOrderTxt.Value & "'"
If (rec.NoMatch) Then
rec.AddNew
Else
rec.Edit
End If
rec("WorkOrder").Value = Me.ProjectAddWorkOrderTxt.Value
rec.Update
Set rec = Nothing
Set db = Nothing
Me.ProjectAddWorkOrderTxt = Null
DoCmd.Close
End Sub
答案 0 :(得分:1)
如果有效,请测试一下吗?
Private Sub ProjectWorkOrderBackBtn_Click()
Dim db As Database
Dim rec As DAO.Recordset
Set db = CurrentDb
Set rec = db.OpenRecordset("ProjectsTempT", dbOpenDynaset, dbSeeChanges)
'On Error Resume Next
'
'rec.FindFirst "WorkOrder='" & Me.ProjectAddWorkOrderTxt.Value & "'"
'
If (rec.EOF) Then
rec.AddNew
Else
rec.Edit
End If
rec("WorkOrder").Value = Me.ProjectAddWorkOrderTxt.Value
rec.Update
Set rec = Nothing
Set db = Nothing
'On Error Goto 0
'
'Me.ProjectAddWorkOrderTxt = Null
'DoCmd.Close
'
End Sub
表ProjectsTempT必须存在。
答案 1 :(得分:1)
您还可以稍微削减代码,这也会增加您的响应时间。
Private Sub ProjectWorkOrderBackBtn_Click()
Dim db As Database
Dim rec As DAO.Recordset
Set db = CurrentDb
Set rec = db.OpenRecordset("Select * from ProjectsTempT WHERE WorkOrder='" & Me.ProjectAddWorkOrderTxt.Value & "'")
If rec.EOF = "True" Then
rec.AddNew
Else
rec.Edit
End If
rec("WorkOrder").Value = Me.ProjectAddWorkOrderTxt.Value
rec.Update
Set rec = Nothing
Set db = Nothing
Me.ProjectAddWorkOrderTxt = Null
DoCmd.Close
End Sub
请记住,Access是客户端,这意味着它会在执行功能之前将整个数据集提取到本地计算机。减小该数据集的大小将加快该过程,因此只需引入您需要的记录,而不是拉动整个表并执行FindFirst。