2015-12-11 43 views
0

希望有人可以帮助我。通过组合框中的列表事件添加记录

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

当我开始在组合框中输入作者姓名时,我希望它更新,并且当我正在查找的作者填写当前我正在输入字符串,我想按回车并将lstAuthor更新到特定的记录,并被选中。

再加上另一个名为lstBook的列表框,用于更新和显示由作者在lstAuthor中选择的书。如果我在lstAuthor中向下滚动作者列表并选择一个作者,这就是目前正在发生的事情。

不在名单:

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

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

回答

0

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

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 

我添加了一个cmdButton到frmAddAuthorFly,包括如下代码cboAuthor的NotInList事件:

,我将不得不像做
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 

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