这个表格是怎么绑定的?

How is this form bound?

我们正在使用 MS Access 数据库 (2010),它是 SQL 服务器数据库的前端。

一位程序员创建了一个绑定到链接 table 的表单。

我的问题是:

所有控件都是未绑定的,但它们始终填充有来自查询的数据。怎么会这样?我真的不喜欢它。我想知道它是否是由某个向导的查询创建的某种形式?

[更新]

我发现,如果我从表单中删除 Record Source,所有控件都会消失,我只有一个 table 视图!

这个"thing"叫什么?

这不是我想要的工作方式;我可以将它转换为正常形式还是必须从头开始重建它?

表单的 VBA 可能通过 ODBC 调用 ADO 或 DAO 记录集到 SQL 服务器数据库并将其附加到表单的 RecordSource 或离开表单未绑定并为每个控件设置值对应于记录集中的字段.查看其 VBA 模块中的代码隐藏形式。或者,传递查询可以是 运行 并绑定到表单。

这是将前端系统连接到后端系统的更艰难的途径,因为您必须绕过 Access 的所有默认特性、命令和功能。使用非绑定表单,开发人员必须为记录管理创建自定义更新、插入、保存和删除事件;数据输入的验证逻辑;以及取决于表单交互的持续光标调用。但从某种意义上说,这反映了软件和网络应用程序的构建方式。 HTML/PHP 页,Java 或 Python 脚本,R 数据框是空的设计 ("unbound") 外壳,直到从连接调用的数据库源检索数据。

一种更简单的方法是 link SQL 服务器后端 table 并将它们绑定到 Access 表单。链接 table 像任何本地 table 一样可用,并且可以在任何上下文(表单、查询、报告、宏、模块)中使用。每次打开表单或事件触发时都不需要大量代码来调用 ODBC 连接,然后再自定义函数。

显然这不是真正的形式。我仍然没有弄清楚如何复制它。如果我能弄清楚,我会 post 回到这里。

但我认为它是 Access 快速向导制作的东西之一,它实际上是一个查询,但具有表单视图。所以当我删除记录源时,没有查询字段可以转换成控件,所以它们就消失了。

我最终创建了一个新表单并将所有控件从查询视图表单复制到真实表单。然后我复制了所有 vba 代码。然后我将新表单连接到原始查询。

它现在就像一个魅力!