【问题标题】:Access VBA: Setting RecordSource of form as a RecordSet访问 VBA:将表单的 RecordSource 设置为 RecordSet
【发布时间】:2011-08-03 17:30:28
【问题描述】:

我有两种形式。一个将显示来自另一个窗体将指向的 RecordSet 的记录。

    Private Sub Form_Load()

        Dim rs As ADODB.Recordset
        Set rs = CurrentDb.OpenRecordset(Forms("reportSelection").Controls("reportComboBox").value)
        RecordSource = rs

    End Sub

因此,当显示表单加载时,它会从另一个表单中填充了记录集名称的组合框中获取值,并将其作为记录集打开。

但是我在 RecordSource = rs 处遇到类型不匹配,我不明白为什么,RecordSource 与 RecordSet 的类型有何不同?

任何帮助表示赞赏!谢谢!

【问题讨论】:

  • RecordSource 想要一个 SQL 查询作为字符串。
  • 哦哇,那更好...谢谢它的工作
  • @Cularis:您应该在答案中复制您的评论,以便它可以被接受....
  • 不管怎样,如果您觉得必须自己创建记录集(而不是让 Access 基于 Recordsource SQL 字符串来创建),您可以将 rs 分配给表单的 Recordset 属性。不过,可能存在一些范围问题——我不知道,因为除了表单的 Recordsource 之外,我没有看到任何理由使用任何东西......

标签: ms-access vba


【解决方案1】:

您需要将 SQL 查询作为字符串提供给 RecordSource 属性。

Private Sub Form_Load()
    Me.RecourdSource = "SELECT Hello FROM World" 
End Sub

一些docsmight找到helpful

【讨论】:

  • 效果很好!介意用语法帮助我吗?: RecordSource = "select from [" & Forms("reportSelection").Controls("reportComboBox").value & "] order by Count where Count > 0" 给我错误:“select 语句包括保留字或参数包含名称拼写错误或缺失,或标点符号不正确”。你能想到我做错了什么吗?
  • 您没有选择列。而count是一个保留字,但它在括号[count]中,其中[count] > 0。
  • 我把它改成了: RecordSource = "select * from [" & Forms("reportSelection").Controls("reportComboBox").value & "] order by [Count] where [Count] > 0”,现在我收到错误:“查询表达式中的语法错误(缺少运算符)'[Count] where [Count] > 0'。知道我缺少什么吗?
  • 这应该是一个新问题,但是:订单前去哪里(之前错过了),您确定在所选表中有一个名为 count 的列吗?
  • 是的,刚刚想通了!订单前去哪里。它有效!感谢所有的帮助!
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多