更改ComboBox数据值时,值不会显示在标签上

时间:2019-03-25 02:40:28

标签: vb6

我正在为公司使用此工资系统,但是无论如何,只要我在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

1 个答案:

答案 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