我正在为公司使用此工资系统,但是无论如何,只要我在ComboBox中更改员工ID,它都不会在标签上显示员工信息。
我尝试更改查询的语法,但仍然没有任何反应
Dim cbo_id As New CAutoCompleteComboBox
Dim rs As New ADODB.Recordset
Private Sub cboEmpID_Change()
On Error GoTo err:
If Me.cboEmpID.Text = vbNullString Then Exit Sub
If rs.State = adStateOpen Then rs.Close
rs.Open "Select * from tblEmp where EM_ID = ' & cboEmpID.Text & '", cn, adOpenKeyset, adLockPessimistic
Do While rs.EOF = True
Me.lblName.Caption = " " & rs.Fields("NAME").Value
Me.lblDept.Caption = " " & rs.Fields("DEPT").Value
Me.lblPosition.Caption = " " & rs.Fields("POSITION").Value
Me.lblRate.Caption = FormatNumber(CCur(rs.Fields("Basic_Rate").Value), 2)
Me.lblStatus.Caption = " " & rs.Fields("Emp_Stat").Value
Me.lblPerDay.Caption = FormatNumber(CCur(Me.lblRate.Caption / 30), 2)
Me.lblNetPay.Caption = FormatNumber(CCur(Me.lblRate.Caption), 2)
rs.MoveNext
Loop
Exit Sub
err:
MsgBox err.Description, vbCritical, "Error"
Set rs = Nothing
End Sub
答案 0 :(得分:0)
查看您的代码,我认为您只希望从请求中返回一行数据,因此只需编写一个If来检查是否已返回一行。我不再有VB6了,但是这段代码可以完成工作:
Private Sub cboEmpID_Change()
On Error GoTo err:
If Me.cboEmpID.Text = vbNullString Then Exit Sub
If rs.State = adStateOpen Then rs.Close
rs.Open "Select * from tblEmp where EM_ID = ' & cboEmpID.Text & '", cn, adOpenKeyset, adLockPessimistic
If rs.EOF = False Then
Me.lblName.Caption = " " & rs.Fields("NAME").Value
Me.lblDept.Caption = " " & rs.Fields("DEPT").Value
Me.lblPosition.Caption = " " & rs.Fields("POSITION").Value
Me.lblRate.Caption = FormatNumber(CCur(rs.Fields("Basic_Rate").Value), 2)
Me.lblStatus.Caption = " " & rs.Fields("Emp_Stat").Value
Me.lblPerDay.Caption = FormatNumber(CCur(Me.lblRate.Caption / 30), 2)
Me.lblNetPay.Caption = FormatNumber(CCur(Me.lblRate.Caption), 2)
End If
Exit Sub
err:
MsgBox err.Description, vbCritical, "Error"
Set rs = Nothing
End Sub