通过组合框的列表事件不添加记录

时间:2015-12-11 06:23:35

标签: ms-access-2013

希望有人能帮助我。

在frmMain上,我有一个列表框(lstAuthor)和一个组合框(cboAuthor)。两者的RowSource是查询qryListAuthor。两者都有两列,authorID和AuthorName,绑定列是col 1。

当我开始在组合框中输入作者姓名时,我希望它更新,当我正在寻找的作者填写我正在键入的当前行时,我想按回车并对该特定的lstAuthor更新记录,并被选中。

另一个名为lstBook的列表框,用于更新和显示在lstAuthor中选择的作者所写的书籍。如果我向下滚动lstAuthor中的作者列表并选择一个。

,目前正在发生这种情况

不在列表中:

如果我在cboAuthor中输入作者姓名,并且作者不存在,我需要按Enter键并打开一个名为frmAddAuthorFly的表单。在我添加了作者并关闭表单之后,我需要使用新作者更新cboAuthor和lstAuthor,以及刚刚添加的作者,以便在lstAuthor中进行选择。并且lstBook也要更新。 frmAddAuthorFly只有三个字段; authorID,authorName和authorCategory。

我浪费了相当多的时间,所以也许有人可以给出解决方案。非常感谢......

1 个答案:

答案 0 :(得分:0)

今天花了一点时间,这就是我想出的。似乎工作正常,但如果有人发现任何明显的问题,请随意提供替代方案。

在cboAuthor的NotInList事件中

Private Sub cboAuthor_NotInList(NewData As String, Response As Integer)
On Error GoTo errline

Dim MsgBoxAnswer As Variant

Response = acDataErrContinue

MsgBoxAnswer = MsgBox("Do you want to add a new author?", vbYesNo, "Add New Author")

If msboxanswer = vbNo Then
Me.cboAuthor = Null
DoCmd.GoToControl "cboAuthor"
GoTo exitline

Else
txtHidden = "addOk"
DoCmd.OpenForm ("frmAddAuthorFly")
DoCmd.GoToRecord , , acNewRec
Forms![frmaddauthorfly]![AuthorName] = NewData
Me.cboAuthor = Null
DoCmd.GoToControl "authorcategory"

End If
exitline:
Exit Sub
errline:
Exit Sub
'Select Case Err.Number

End Sub

我已经向frmAddAuthorFly添加了cmdButton并包含以下代码:

Private Sub cmdClose_Click()
On Error GoTo errline

If Forms![frmmain]![txtHidden] = "addok" Then
Forms![frmmain]![cboAuthor].Requery
Forms![frmmain]![LstAuthor].Requery
Forms![frmmain]![LstAuthor] = Me.AuthorID
Forms![frmmain]![txtHidden] = "AddDone"
DoCmd.Close acForm, "frmAddAuthorFly"
Forms![frmmain]![cboAuthor].Requery
Forms![frmmain]![LstAuthor].Requery
Forms![frmmain].[LstAuthor].SetFocus

Else
MsgBox "txt hidden is not addok"
DoCmd.Close acForm, "frmaddauthorfly"
End If

errline:
Exit Sub

End Sub

我想做的一件事是,在我将重点放在新作者上之后,只需在列表框中添加记录就可以点击它。不只是突出显示,但我想我可以点击它......