"Add Record" 在第一次使用 Access 后得到 "Can't go to specified record"
"Add Record" gives "Can't go to specified record" after first use Access
我在表单中有一个命令按钮,允许用户添加新记录。该命令仅在您在打开表单后第一次单击它时起作用。我可以毫无错误地浏览记录,并且在打开表单后第一次添加记录时不会出现错误。一旦您尝试添加第二条记录,就会显示 "Can't go to the specified record" 错误消息。
我可以毫无问题地在查询中进行编辑,也可以毫无问题地进行编辑。如果我关闭表格并重新打开它,我可以毫无问题地添加新记录。有人有想法吗?
使用VBA,这是标准的添加新代码,没有别的。在下面发布了此表单的所有代码。列出的一些命令按钮在宏中,不知道这是否有所不同。
Private Sub add_Click()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub edit_info_Click()
Date_of_Echo.Locked = False
ID.Locked = False
AoV.Locked = False
AI.Locked = False
MR.Locked = False
TR.Locked = False
TR_velocity.Locked = False
PA_pressures.Locked = False
LVeDD.Locked = False
LVeSD.Locked = False
RV_function.Locked = False
comments.Locked = False
Me.next.Visible = False
Me.previous.Visible = False
Me.first.Visible = False
Me.last.Visible = False
Me.add.Visible = False
Me.save.Visible = True
Me.save.SetFocus
Me.edit_info.Visible = False
End Sub
Private Sub Form_Current()
If Me.NewRecord Then
Me.recordcounter.Caption = "New Record"
Me.next.Visible = False
Me.previous.Visible = False
Me.first.Visible = False
Me.last.Visible = False
Me.add.Visible = False
Me.edit_info.Visible = False
Me.save.Visible = True
Date_of_Echo.Locked = False
ID.Locked = False
AoV.Locked = False
AI.Locked = False
MR.Locked = False
TR.Locked = False
TR_velocity.Locked = False
PA_pressures.Locked = False
LVeDD.Locked = False
LVeSD.Locked = False
RV_function.Locked = False
comments.Locked = False
Else
Me.recordcounter.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.RecordCount
Me.next.Visible = True
Me.previous.Visible = True
Me.first.Visible = True
Me.last.Visible = True
Me.add.Visible = True
Me.edit_info.Visible = True
Me.save.Visible = False
End If
End Sub
Private Sub save_Click()
DoCmd.save
Me.previous.Visible = True
Me.first.Visible = True
Me.last.Visible = True
Me.next.Visible = True
Me.add.Visible = True
Me.edit_info.Visible = True
Me.recordcounter.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.RecordCount
Me.add.SetFocus
Me.save.Visible = False
Date_of_Echo.Locked = True
ID.Locked = True
AoV.Locked = True
AI.Locked = True
MR.Locked = True
TR.Locked = True
TR_velocity.Locked = True
PA_pressures.Locked = True
LVeDD.Locked = True
LVeSD.Locked = True
RV_function.Locked = True
comments.Locked = True
End Sub
Private Sub next_Click()
On Error GoTo Err_cmdLastRecord_Click
Me.AllowAdditions = False
DoCmd.GoToRecord , , acNext
Exit_cmdLastRecord_Click:
Exit Sub
Err_cmdLastRecord_Click:
MsgBox " There are no more records ", vbExclamation, ""
Resume Exit_cmdLastRecord_Click
End Sub
我的第一个想法是,在您尝试转到新记录之前,您的记录没有保存,所以试试这个,看看它是否能解决问题。
Private Sub add_Click()
If Me.Dirty Then
Me.Dirty = False
End If
DoCmd.GoToRecord , , acNewRec
End Sub
我提到的同样问题的另一件事是您应该检查表单数据源查询。是否所有的 FIELDS 都可用,JOINS 是否正确?
在我的例子中,我将索引连接从文本字段更改为数字字段,它也需要在表单数据源查询中进行更新。
如果有人仍然遇到这个问题,我无法解释为什么会这样,但这里有一个解决方法:
重置表单上的AllowAdditionsProperty
:
Me.[form_name].Form.AllowAdditions = False
Me.[form_name].Form.AllowAdditions = True
这是一个非常奇怪的问题,因为我的代码几周以来一直运行良好。我正在使用这样的东西:
Me.frm.SetFocus
DoCmd.GoToRecord , , acNewRec
!Field1 = value1
!Field2 = value2
它工作得很好,然后我突然开始收到“无法转到指定记录”错误,即使我没有对代码进行任何更改。表单设置很好,我可以整天在基础 table 中添加记录。我什至在 Immediate window 中检查了表单的 AllowAdditions
属性,结果显示它已设置为 True
。但我尝试了这个变通办法,它奏效了。
现在我在 Docmd.GoToNewRoecord
、acNewRecord
的每个实例之后添加这两行并且它正在工作。
我在表单中有一个命令按钮,允许用户添加新记录。该命令仅在您在打开表单后第一次单击它时起作用。我可以毫无错误地浏览记录,并且在打开表单后第一次添加记录时不会出现错误。一旦您尝试添加第二条记录,就会显示 "Can't go to the specified record" 错误消息。
我可以毫无问题地在查询中进行编辑,也可以毫无问题地进行编辑。如果我关闭表格并重新打开它,我可以毫无问题地添加新记录。有人有想法吗?
使用VBA,这是标准的添加新代码,没有别的。在下面发布了此表单的所有代码。列出的一些命令按钮在宏中,不知道这是否有所不同。
Private Sub add_Click()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub edit_info_Click()
Date_of_Echo.Locked = False
ID.Locked = False
AoV.Locked = False
AI.Locked = False
MR.Locked = False
TR.Locked = False
TR_velocity.Locked = False
PA_pressures.Locked = False
LVeDD.Locked = False
LVeSD.Locked = False
RV_function.Locked = False
comments.Locked = False
Me.next.Visible = False
Me.previous.Visible = False
Me.first.Visible = False
Me.last.Visible = False
Me.add.Visible = False
Me.save.Visible = True
Me.save.SetFocus
Me.edit_info.Visible = False
End Sub
Private Sub Form_Current()
If Me.NewRecord Then
Me.recordcounter.Caption = "New Record"
Me.next.Visible = False
Me.previous.Visible = False
Me.first.Visible = False
Me.last.Visible = False
Me.add.Visible = False
Me.edit_info.Visible = False
Me.save.Visible = True
Date_of_Echo.Locked = False
ID.Locked = False
AoV.Locked = False
AI.Locked = False
MR.Locked = False
TR.Locked = False
TR_velocity.Locked = False
PA_pressures.Locked = False
LVeDD.Locked = False
LVeSD.Locked = False
RV_function.Locked = False
comments.Locked = False
Else
Me.recordcounter.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.RecordCount
Me.next.Visible = True
Me.previous.Visible = True
Me.first.Visible = True
Me.last.Visible = True
Me.add.Visible = True
Me.edit_info.Visible = True
Me.save.Visible = False
End If
End Sub
Private Sub save_Click()
DoCmd.save
Me.previous.Visible = True
Me.first.Visible = True
Me.last.Visible = True
Me.next.Visible = True
Me.add.Visible = True
Me.edit_info.Visible = True
Me.recordcounter.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.RecordCount
Me.add.SetFocus
Me.save.Visible = False
Date_of_Echo.Locked = True
ID.Locked = True
AoV.Locked = True
AI.Locked = True
MR.Locked = True
TR.Locked = True
TR_velocity.Locked = True
PA_pressures.Locked = True
LVeDD.Locked = True
LVeSD.Locked = True
RV_function.Locked = True
comments.Locked = True
End Sub
Private Sub next_Click()
On Error GoTo Err_cmdLastRecord_Click
Me.AllowAdditions = False
DoCmd.GoToRecord , , acNext
Exit_cmdLastRecord_Click:
Exit Sub
Err_cmdLastRecord_Click:
MsgBox " There are no more records ", vbExclamation, ""
Resume Exit_cmdLastRecord_Click
End Sub
我的第一个想法是,在您尝试转到新记录之前,您的记录没有保存,所以试试这个,看看它是否能解决问题。
Private Sub add_Click()
If Me.Dirty Then
Me.Dirty = False
End If
DoCmd.GoToRecord , , acNewRec
End Sub
我提到的同样问题的另一件事是您应该检查表单数据源查询。是否所有的 FIELDS 都可用,JOINS 是否正确? 在我的例子中,我将索引连接从文本字段更改为数字字段,它也需要在表单数据源查询中进行更新。
如果有人仍然遇到这个问题,我无法解释为什么会这样,但这里有一个解决方法:
重置表单上的AllowAdditionsProperty
:
Me.[form_name].Form.AllowAdditions = False
Me.[form_name].Form.AllowAdditions = True
这是一个非常奇怪的问题,因为我的代码几周以来一直运行良好。我正在使用这样的东西:
Me.frm.SetFocus
DoCmd.GoToRecord , , acNewRec
!Field1 = value1
!Field2 = value2
它工作得很好,然后我突然开始收到“无法转到指定记录”错误,即使我没有对代码进行任何更改。表单设置很好,我可以整天在基础 table 中添加记录。我什至在 Immediate window 中检查了表单的 AllowAdditions
属性,结果显示它已设置为 True
。但我尝试了这个变通办法,它奏效了。
现在我在 Docmd.GoToNewRoecord
、acNewRecord
的每个实例之后添加这两行并且它正在工作。