2015-12-11 70 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 

一件事,就是後我把重點放在剛剛添加記錄的新作者,在列表框中,點擊了它。不只是突出顯示,但我想我可以點擊它...