2014-03-26 40 views
1

我有一個代碼在我的表單中,一旦你輸入一個員工id它會搜索一個表並自動填充相應的數據。如果該號碼是不完整的或不是在表中的誤差窗口彈出 enter image description here添加一個錯誤代碼

並且在下面的代碼:

的Me.txtEmpName = REC(「EMP_NA」)被高亮顯示。我想在一個不完整的ID的情況下,或者如果ID不存在,會出現一個消息框,表示該員工ID無效,請重試。或者沿着這些線路的東西,那麼它只是回到表單而不是獲取上面的錯誤消息。有什麼想法嗎?

Private Sub txtEmpID_AfterUpdate() 
Dim db As DAO.Database 
Dim rec As DAO.Recordset 

Set db = CurrentDb 
strSQL = "Select * From tblEmpData Where TMSID = '" & Me.txtEmpID & "'" 
Set rec = db.OpenRecordset(strSQL) 

Me.txtEmpName = rec("EMP_NA") 
Me.cboGender = rec("EMP_SEX_TYP_CD") 
Me.cboEEOC = rec("EMP_EOC_GRP_TYP_CD") 
Me.txtDivision = rec("DIV_NR") 
Me.txtCenter = rec("CTR_NR") 
Me.cboRR = rec("REG_NR") 
Me.cboDD = rec("DIS_NR") 
Me.txtJobD = rec("JOB_CLS_CD_DSC_TE") 
Me.cboJobGroupCode = rec("JOB_GRP_CD") 
Me.cboFunction = rec("JOB_FUNCTION") 
Me.cboMtgReadyLvl = rec("Meeting_Readiness_Rating") 
Me.cboMgrReadyLvl = rec("Manager_Readiness_Rating") 
Me.cboJobGroup = rec("JOB_GROUP") 

Set rec = Nothing 
Set db = Nothing 
End Sub 

回答

4

打開記錄集後,檢查它是否爲空。如果爲空,請提供您的信息。如果不爲空,請將記錄集值加載到數據控件中。

Set rec = db.OpenRecordset(strSQL) 
If (rec.BOF And rec.EOF) Then 
    ' when both BOF and EOF are True, the recordset is empty 
    MsgBox "employee id is not valid, please try again" 
Else 
    Me.txtEmpName = rec("EMP_NA") 
    ' and so forth 
End If 
+0

你對這個東西的廣泛知識是無與倫比的。 – user2119980

1

以下代碼將解決您遇到的問題。 1.你沒有找到記錄,因此你收到的錯誤。 2.如果要處理其他錯誤,請更改Error_Trap中的代碼以測試錯誤號。

Private Sub txtEmpID_AfterUpdate() 
Dim db As DAO.Database 
Dim rec As DAO.Recordset 

    On Error GoTo Error_Trap 
    Set db = CurrentDb 
    strSQL = "Select * From tblEmpData Where TMSID = '" & Me.txtEmpID & "'" 
    Set rec = db.OpenRecordset(strSQL) 
    If rec.EOF Then 
     MsgBox "The Employee ID you entered was not found. Please try again", vbOKOnly, "Wrong ID" 
     GoTo Close_It 
    End If 

    Me.txtEmpName = rec("EMP_NA") 
    Me.cboGender = rec("EMP_SEX_TYP_CD") 
    Me.cboEEOC = rec("EMP_EOC_GRP_TYP_CD") 
    Me.txtDivision = rec("DIV_NR") 
    Me.txtCenter = rec("CTR_NR") 
    Me.cboRR = rec("REG_NR") 
    Me.cboDD = rec("DIS_NR") 
    Me.txtJobD = rec("JOB_CLS_CD_DSC_TE") 
    Me.cboJobGroupCode = rec("JOB_GRP_CD") 
    Me.cboFunction = rec("JOB_FUNCTION") 
    Me.cboMtgReadyLvl = rec("Meeting_Readiness_Rating") 
    Me.cboMgrReadyLvl = rec("Manager_Readiness_Rating") 
    Me.cboJobGroup = rec("JOB_GROUP") 

Close_It: 
    Set rec = Nothing 
    Set db = Nothing 
    Exit Sub 

Error_Trap: 
    If Err.Number = 99999999 Then      ' Change this line to test for other conditions 
     MsgBox "...... ", vbOKOnly, "....." 
     Resume Close_It 
    End If 
End Sub