【问题标题】:Updating text box value from combobox option从组合框选项更新文本框值
【发布时间】:2016-12-06 10:17:50
【问题描述】:

我无法弄清楚我的代码哪里出错了。当用户在组合框中选择一个值时,我希望它转到顾问表并获取该顾问的默认费率并将其粘贴在每小时费率文本框中。 This is the msg that I get when I update the combobox.

Private Sub cmbConsultant_Change()
Dim db As Database
Dim rs As DAO.Recordset ''Requires reference to Microsoft DAO x.x Library
Dim strSQL As String

strSQL = "defaultFee * FROM tblConsultants WHERE ID = """ & Me!cmbConsultant & """"

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)

If rs.RecordCount > 0 Then
   Me.txtHourlyRate = rs!CountOfEndDeviceType
Else
   Me.txtHourlyRate = ""
End If

Set rs = Nothing
Set db = Nothing

结束子

【问题讨论】:

    标签: ms-access combobox vba ms-access-2010


    【解决方案1】:

    您可以为此使用 DLookup - 更简单:

    Private Sub cmbConsultant_Change()
    
        Me!txtHourlyRate.Value = DLookup("defaultFee", "tblConsultants", "ID = '" & Me!cmbConsultant.Value & "'")
    
    End Sub
    

    但是,您的 ID 很可能是数字,因此:

    Private Sub cmbConsultant_Change()
    
        Me!txtHourlyRate.Value = DLookup("defaultFee", "tblConsultants", "ID = " & Me!cmbConsultant.Value & "")
    
    End Sub
    

    【讨论】:

    • 这似乎是一种更有效的处理方式,但是当我现在尝试更改组合框值时,我收到错误 3464:标准表达式中的数据类型不匹配。有什么想法吗?
    【解决方案2】:

    我认为你需要一些SELECT 这里

    strSQL = "defaultFee * FROM tblConsultants WHERE ID = """ & Me!cmbConsultant & """"
    

    应该是这样的:

    strSQL = "SELECT defaultFee AS [CountOfEndDeviceType] FROM tblConsultants WHERE ID = """ & Me!cmbConsultant & """"
    

    另请注意,[CountOfEndDeviceType] 必须是 FieldName,所以我已将其放在 Select 语句中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多