【问题标题】:SQL query to pull the values for a record from table?SQL查询从表中提取记录的值?
【发布时间】:2021-12-14 18:48:53
【问题描述】:

所以我基本上试图使用客户 ID 从表格中提取客户信息,如姓名、地址、电话等,用于预先填写表格中的某些文本框。我将它链接到一个按钮,该按钮搜索另一个名为 CustomerID 的表,以查看电话号码是否存在于“电话”列中,如果存在则返回与其关联的 cusID,我使用 Dlookup 执行此操作,这似乎有效。然后,我想使用 cusID 使用下面的 SQL 查询从表 CustomerInfo 中查找相应的客户信息,但它只是在 SQL 查询行上抛出“Run-time elso rror '13' Type mismatch”。我已经尝试了一堆不同的格式,但似乎无法让它工作,有人知道我做错了什么吗?甚至可以将 SQL 查询数据解析为单独的文本框吗?下面还有代码

Private Sub querycust_Click()
phonesearch = DLookup("cusID", "CustomerID", "phone='" & 9999999999# & "'")
If IsNull(phonesearch) Then
    MsgBox ("No Customer ID Exists For This Phone Number")
    
ElseIf Not IsNull(phonesearch) Then
    DoCmd.RunSQL "SELECT " * " FROM CustomerInfo WHERE [CustomerInfo]![CusID]=phonesearch"
    


End If


End Sub

【问题讨论】:

  • "SELECT * FROM CustomerInfo WHERE [CustomerInfo]![CusID]=" & phonesearch
  • DoCmd.RunSQL 用于操作查询,不返回数据。
  • @ScottCraner 感谢您的回复!我刚刚尝试过,它现在抛出另一个错误“运行时错误 2342,runsql 操作需要一个由 SQL 语句组成的参数”
  • @Applecore 是的,我正在阅读其他线程,看到有人提到但没有任何替代方案,那么您将如何在 VBA 中获取相应的数据?
  • 您可以尝试将表单的.Recordsource 设置为您创建的SQL 语句。或者,也可以使用 SQL 语句打开 Recordset,然后根据需要设置控件。除非您需要表中的所有字段,否则只需选择将要使用的字段,因为这样会更快。

标签: sql vba ms-access


【解决方案1】:

试试这样的:

Private Sub querycust_Click()

    Dim Records As DAO.Recordset
    Dim Sql As String

    Sql = "Select * From CustomerInfo Where phone = '9999999999'"
    Set Records = CurrentDb.OpenRecordset(Sql)
    If Records.RecordCount = 0 Then
        MsgBox "No Customer ID Exists For This Phone Number"
    Else
        Me!txtCustomerID = Records!cusID.Value
        ' More controls and values.
    End If
    Records.Close

End Sub

【讨论】:

  • 刚试了一下,在Set Records = CurrentDb.OpenRecordset(Sql)这一行抛出“参数太少,预期为1”
【解决方案2】:

你可以这样做:

Private Sub querycust_Click()
   cusID = DLookup("cusID", "CustomerID", "phone='" & 9999999999# & "'")
   If IsNull(cusID) Then
      MsgBox ("No Customer ID Exists For This Phone Number")    
   Else
      me.RecordSource = "SELECT * FROM CustomerInfo WHERE CustomerID = " & CusID    
   end if
end Sub

所以上面将加载表单和所有文本框等,其中包含来自该 sql 语句的数据。

【讨论】:

  • 好的,我将如何将文本框绑定到查询数据?文本框当前未绑定
  • 他们应该被绑定。您可以将表单属性表中的表单数据源设置为表格。现在每个控件都可以让您从表中选择一个列名。然后移除表单的数据源,因为我们上面的示例代码将在代码中为我们设置数据源。您也可以说使用向导创建一个新表单(这取决于您在现有表单中的工作量和工作量)。因此,将表单设置为表格 - 然后您可以绑定控件。然后在完成后删除表(设置)作为数据源。
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 2014-12-23
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2023-02-25
  • 2016-11-30
相关资源
最近更新 更多