前端为access,后端为sql server

Posted

技术标签:

【中文标题】前端为access,后端为sql server【英文标题】:Access as the front end and sql server as the backend 【发布时间】:2011-09-27 18:52:19 【问题描述】:

我有一些包含许多字段的 Access 表。我已将每个访问表迁移到 6 个或 7 个 sql server 表。我正在使用sql server 2008。现在我想使用Access作为前端,这样我就可以在access中输入数据,但它将存储在sql server中。我知道我必须建立一个 ODBC 连接。但我不确定如何创建访问表单以将其用作前端。如果这是一个基本问题,我很抱歉......

【问题讨论】:

【参考方案1】:

您可能希望从一个空的 Access 数据库开始(因为表结构和任何现有的表单和报告都与您在 SQL Server 中创建的不匹配)。

第一步是建立与您的 SQL Server 数据库的 ODBC 连接。然后您将 SQL Server 中的表“链接”到您的 Access 数据库。

现在,您有一个 Access 数据库,其中包含您从 SQL Server 链接的所有表。这些表在 SQL Server 中仍然“活动”,当您在 Access 中编辑它们时,数据将存储在 SQL Server 中。

然后,您可以使用这些表构建 Access 表单和报告,就像这些表是 Access 原生的一样。

【讨论】:

为什么 ADP 需要 DSN 或 ODBC 连接?通过 SQLOLEDB 的 SQL Server 连接是内置的。 DSN 也是部署开销。 ADP 自 Access 2000/2003 以来就已存在。 取决于用户的喜好。 ADP 是另一种有效的解决方案。我的经验是迁移到链接表(如果所有表结构都是新的,则对这个用户来说不太重要)。 @LarryLustig 我已经通过转到Administrative Tools->DataSources->System DSN->added the sql server and the database name I wanted to use as front end 完成了到 sql server 的 ODBC 连接现在我还使用sp_addlinkedserver 'connect', 'Access 2007','Microsoft.ACE.OLEDB.12.0', 'C:\connect.accdb' 链接到了 sql server 但来自 sql server 的表没有显示在空的访问数据库..我哪里出错了? 在 Access 中,找到链接表管理器。从 SQL Server 数据库中选择所需的表。它们现在应该出现在 Access 的表列表中(它们旁边有一个图标,表明它们是链接的,而不是本地的表)。 @LarryLustig 谢谢我明白了,我在linking the tables 中失败了。现在我已经给出了 DSN 及其工作的正确路径名!如果我继续使用access作为前端还是应该切换到dotnet接口,从长远来看会有什么问题需要考虑(我必须在dotnet longg过程中学习和编码哈!!)【参考方案2】:

最通用的方法是使用指向 SQL Server 表和视图的 ODBC 链接。这种方法允许您灵活地链接到其他 ODBC 数据源、其他 Jet/ACE 数据库文件中的表、在您的数据库中本地创建 Jet/ACE 表、链接到 Excel 电子表格等等。您可以合并范围广泛的数据源。

如果您选择 ADP,您将被限制为与单个 SQL Server 实例的 OLE DB 连接。您将基本上被锁定在 SQL Server 中。如果不进行重大的重新开发工作,您将无法将应用程序切换到不同的客户端-服务器数据库。

关于 ODBC 的部署开销,尽管您可能会发现在开发过程中使用 DSN 很方便,但您应该在部署之前将 ODBC 链接转换为无 DSN 连接。这样您的用户就不会每个都需要 DSN。请参阅 Doug Steele 的页面:Using DSN-Less Connections

【讨论】:

我创建了一个空的访问数据库。我已经通过转到我想用作前端的Administrative Tools->DataSources->System DSN->added the sql server and the database 名称完成了到 sql server 的 ODBC 连接现在我还使用sp_addlinkedserver 'connect', 'Access 2007','Microsoft.ACE.OLEDB.12.0', 'C:\connect.accdb' 链接到了 sql server 但来自 sql server 的表没有显示为空访问数据库..我哪里出错了? 创建 DSN 时,不要添加任何关于 Access 的内容。您的 DSN 将描述与 SQL Server 的连接的属性。它不是特定于 Access 的东西,但任何可以使用 ODBC 连接的应用程序都应该可以使用它。 谢谢我知道了,我在linking the tables 中失败了。现在我已经给出了 DSN 及其工作的正确路径名!您能否建议我长期用作前端 Access 或 dotnet 中的接口? 在您对 Larry 的评论中,您表示需要学习 Dot.Net。所以也许这就是你应该走的路。 OTOH,也许您现在需要一个基于功能表单的 SQL Server 界面。如果是这样,Access 在数据库应用程序的快速开发方面很难被击败。这就是它存在的理由!【参考方案3】:

您可以创建一个 ODBC 连接。您也可以创建 ADODB 连接。如果您的目标是更新或修改 SQL 数据库,则两个连接都可以解决问题。

现在,我想你必须熟悉相应的对象。这些应该是表、查询、命令等......,例如,这将允许您从 SQL 查询中构建记录集......一旦您清楚这一点,您就可以将记录集分配给表单通过Set myForm.recordset = myRecordset.open ... 方法。

【讨论】:

以上是关于前端为access,后端为sql server的主要内容,如果未能解决你的问题,请参考以下文章

多个 MS Access 前端连接到单个远程 SQL Server 后端

SQL Server 后端和 Access 前端 - 与 SQL Server 本机客户端的 ODBC 连接失败

使用ajax异步下载文件,后端为struts2

日期转换错误——MS Access前端查询sql后端

SQL-Server 后端、MS Access 前端:连接

MS Access 前端与 SQL Server 后端查询存储最佳实践 [关闭]