1

我将 Access 2007 用于原型应用程序。我有两个数据库 testUi.accdb(其中

包含我的所有表单)和 testDb.mdb(包含我的数据库)。现在我想在我的一个子表单中使用数据表。有人可以帮我解决这些问题吗?

  1. 我可以手动构建没有表格的数据表吗?
  2. 如何通过 VBA 代码使用 DAO 或 ADO 将数据与此数据表绑定
  3. 是否可以使用 VBA 代码循环数据表?获取或设置每一行的值?
  4. 如果以上是不可能的,那么在 Access 中使用像网格这样的数据表的替代方法是什么?
4

1 回答 1

2

1) 数据表表单只能绑定到 DAO 记录集对象或 ADO 记录集对象。您可以通过设置 RecordSource 将它们隐式绑定到 DAO 记录集对象,也可以在代码中手动执行,如 #2 所示。您只能使用代码绑定到 ADO 记录集,然后数据表的某些默认选项(如过滤和排序)将不起作用。

2)我知道这过于简化了,但是......在表单的加载事件中:Set Me.Recordset = rs(rs 是您的记录集对象)

3) 您不能像在许多网格控件上那样循环插入行对象和数据的数据表。

4) 你可以使用微软的ActiveX 控件,例如Grid Control 或ListView Control。

您可能完成此操作的一种方法是使用“制造的 ADO 记录集”,然后将表单绑定到该记录集。这将使用我在#1 和#2 中列出的选项。

在任何情况下,Access 数据表表单都不会像许多网格控件那样动态添加和配置足够的单元格/列来显示数据。这意味着您需要事先在表单上有足够的文本框,然后使用代码将它们绑定到 DAO 或 ADO 记录集中的字段。您不需要的任何列都必须使用代码隐藏。标签标题必须使用代码填写,以便它们成为正确的列标题。简而言之,虽然数据表视图实际上非常强大,但它根本不是网格控件。

如果您曾经使用过 .NET,那么创建一个可以为您提供所需内容的 AddIn 或 dll 可能会相当简单(尽管不是微不足道的)。唯一的问题是 .NET 的 DataGridView 不能绑定到 DAO 或 ADO 记录集,因此您必须编写代码来获取 DAO 或 ADO 记录集并将该记录集“转换”为 ADO.NET DataTable。或者,您可以编写,以便您的 .NET 表单通过获取数据库和查询信息并使用它来检索所需数据来进行数据访问。

Edit1
为了回应您在下面的评论,这里有一些示例代码。我认为您需要创建一个显式记录集对象,您在下面的评论中没有这样做。

Option Compare Database
Option Explicit

Private Sub Form_Load()
    Dim db As DAO.Database
    Set db = OpenDatabase("E:\Access\Testdb.mdb")
    Dim rs As DAO.Recordset
    Set rs = db.OpenRecordset("Select * from tblMarket", dbOpenSnapshot)
    Set Me.Market1.Form.Recordset = rs
    Set rs = Nothing
End Sub
于 2012-10-18T15:15:38.887 回答