0

我的客户问我是否可以将他现有的 Microsoft Access 数据库与他的 Linux 共享主机网站集成。他一直在使用 Microsoft Access 在他的本地计算机上保存客户数据的记录,但现在希望让他们能够在线查看他们的数据。在我用最好的方法回复他之前,我想在这里问几个问题。

目前,我似乎有两个可行的选择:
a)将他的数据库转换为 MySQL 或类似的,并允许他使用基于 Web 的界面而不是 Microsoft Access 桌面客户端继续更新数据库。

b)允许他继续使用 Microsoft Access,并允许他将更新的文件上传到将解析它们的脚本,然后更新 MySQL 数据库。

我做了一些关于直接在 Linux 上使用 Microsoft Access 数据库的研究,但它似乎没有得到很好的支持,也不是最好的选择。

显然选项b需要做更多的工作,但我担心他会拒绝从 Microsoft Access 更改为基于 Web 的替代方法来更新数据。我只是想在回复他之前得到一些反馈。

那么,将我客户现有的 MS Access 数据库与他的 Linux 托管站点集成的最佳方法是什么?

4

5 回答 5

3

您可以使用 PDO 使用 PHP 查询 Microsoft Access 数据库,但它可能不是 Web 最强大的选项。Access 设计为单用户数据库,您可能会遇到中度到严重的性能问题。

可以在此处找到有关如何完成此操作的指南:http: //phpmaster.com/using-an-access-database-with-php/

大约 7 年前,我遇到了类似的问题,我们最终将数据库转换为 MySQL,并让一些用户通过 Access 与数据进行交互,这为我们提供了一个可以在 Web 上使用的数据库,以及一个熟悉的用户界面拒绝更改为使用网络,尽管您的里程可能会有所不同: http: //dev.mysql.com/doc/refman/5.1/en/connector-odbc-examples-tools-with-access.html

于 2012-10-29T23:22:56.953 回答
0

有一个新的软件工具,CNS Media Gateway,您可以使用。

您可以通过 CNS ODBC 和 JDBC 驱动程序从任何自定义应用程序或平台(如 Linux)连接到 MS Access、Exchange (2000 - 2013)、MS SharePoint、Dynamics CRM、Dynamics NAV 等,从而访问整个 Exchange来自您的自定义应用程序的邮箱。

我希望这篇文章能帮助你回答你的问题。

欲了解更多信息,请访问:

http://www.connecting-software.com

于 2013-01-11T12:24:11.660 回答
0

为什么不考虑将表移到 SQL Server 之类的东西上,或者使用 MySQL,然后继续在用户桌面上使用 Access 前端?

在我看来,对于我们所谓的应用程序之间的区别存在一些广泛的混淆。应用程序具有我们所说的 UI(用户界面)。这意味着您拥有用户代码、表单等用户界面以及报告等内容。

应用程序的这一部分是使用 MS Access 等开发工具构建的。

在使用 MS、Access、Delphi、C++ 或 VB 构建应用程序时,您还必须选择数据库系统来存储这些数据。因此,如果您使用 C++、Delphi、VB 或在这种情况下为 MS Access 编写应用程序,您就可以自由选择合适的数据库系统与该开发工具一起使用。通常,开发具有 MS 访问权限的应用程序软件的人会选择使用名为 JET 的默认和基于文件共享的数据引擎(或现在的 ACE,因为有一个新版本支持 64 位并且还存储过程)。

换句话说,您可以继续使用此应用程序,但只需将表链接到 SQL 服务器,或者在本例中为运行在 Web 服务器上的 MySQL 实例。

所以我不确定为什么这里会出现如此混乱的情况,而且人们无法区分您选择使用的数据库系统?以及使用像 MS Access 这样的工具来构建和开发软件。

我的意思是接下来会发生什么?我们要称 VB 或 C++ 为数据库?人们在我们的行业中不掌握和理解数据库系统与软件开发系统之间的区别似乎非常愚蠢。

我不确定在哪里或为什么会在这里发生如此大的混乱,但我当然希望人们不会被某人付钱或做咨询或实际接受计费的工作时间,其中数据库和应用程序系统之间的基本理解和区别是不明白!我很想对我们 IT 行业可怕的事态和缺乏教育大发雷霆,但我会避免这样做。

无论如何,10 多年来,我一直在使用廉价的低成本网络托管并将 MS Access 应用程序部署到人们的桌面上。我只是将应用程序链接到在 Web 服务器上运行的数据库实例。我开始使用 MySQL 来做这件事,但在过去的很多年里,我一直在使用 SQL Server(而且我一直在使用 SQL Server,因为我更习惯它)。

因此,没有什么能阻止您将数据和表移动到在该 Linux 服务器上运行的某种类型的 SQL 服务器或 MySQL 的实例。因此,您可以“按原样”继续使用 Access 应用程序。通过这种方式,99% 的代码、表单和应用程序应该可以继续运行而无需修改。应用程序中可能有一些小片段和几行代码不起作用,但对于任何熟悉 Access 作为开发的应用程序开发人员来说,这不应该花费超过几个小时的时间工具。

这种设置的美妙之处在于,您构建的任何类型的 Web 界面现在都可以立即在用户桌面上的任何访问表单中看到。用户在 Access 表单和 Access VBA 代码中的任何更新都将立即出现在网站上,因为他们共享同一个数据库系统。

所以我认为最好的方法是首先掌握使用 Access 内置的应用程序与您选择使用 Access 的数据库系统之间的区别。

最后但同样重要的是,Access 现在确实具有 Web 发布功能,您可以根据以下视频了解我如何更改为在 Access 中运行此应用程序以 100% 浏览器:

http://www.youtube.com/watch?v=AU4mH0jPntI

但是,上述内容确实需要所谓的访问 Web 服务。事实上,它基于一组 Web 服务和添加到 Access 的新界面 - 因此,除非运行 Office 365 或 SharePoint,否则此设置在这种情况下不合适。

于 2012-10-30T04:07:37.817 回答
0

商业上有几种选择。下面是来自 Easysoft 的一对,在从 PHP-ODBC 或 PDO 连接时可能会有所帮助:-

  1. Easysoft ODBC-Access 驱动程序,它可以在 Linux 上连接到本地访问数据库或使用 Samba 连接到远程 Windows 机器上的 Access 数据库。如果您要使用 Samba,您可以与其他用户同时访问 MS Access 数据库。

  2. Easysoft ODBC-ODBC 桥,这是一个客户端服务器安装,您将客户端 ODBC 驱动程序放在 Linux 上,将 ODBC-ODBC 桥 (OOB) 服务器放在 Windows 上。然后你会得到 PHP 程序 -> OOB 客户端 -> OOB 服务器 -> MS Access ODBC 驱动程序 -> MS Access 数据库。

两种解决方案都有优点和缺点,但它们都应该符合您的要求。您可以从Easysoft 网站获得该软件的试用版。

于 2012-10-30T09:28:02.700 回答
0

我刚刚为一个无法将数据库移出 Access 并且没有第三方驱动程序预算的项目做了类似的事情。这是一个非常令人头疼的问题,因此在这里为遇到此问题的其他人记录我的解决方案:

  1. 在 Linux 服务器上,我们可以挂载包含 access 数据库的 Windows 网络驱动器,然后使用Meza 包将表加载到内存中。这需要知道我们想要对该表进行哪些更改。

    meza.io.read_mdb(path, table='TABLENAME')

  2. 为了真正在访问数据库中进行更新,我们将想要进行的更改集移动到共享网络驱动器(我们在上面安装的)上的 .txt 文件中。然后在 Windows 服务器上,我们可以使用 Powershell 脚本读取该文件,在该脚本中生成适当的 SQL 并在 Access 数据库上执行该 SQL。

    $conn = New-Object System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$YOURACCESSDATABASE;Persist Security Info=False") $conn.Open() $transaction = $conn.BeginTransaction() $command = $conn.CreateCommand() $command.Transaction = $transaction $command.CommandText = "UPDATE [table] SET [col]=@PARAMNAME" $PARAMVAR = "Set a parameter value" $command.Parameters.AddWithValue("@PARAMNAME",$PARAMVAR) $command.ExecuteNonQuery() $transaction.Commit()

  3. 在我的工作流程中,我有 Linux python 脚本循环和睡眠等待进行更改,然后 Windows Powershell 脚本在完成更改后截断 .txt 文件,这是 Linux python 可以检查以了解它何时准备就绪接着说。

几点注意事项:

  • 需要 Windows 服务器上的 Microsoft Access Database Engine 2010,您可以在此处下载:http: //www.microsoft.com/en-us/download/details.aspx?id=13255
  • Powershell 必须运行 x86 架构,因此我将其添加到我的 Powershell 脚本中:

    if ($env:Processor_Architecture -ne "x86")
    { write-warning 'Launching x86 PowerShell' &"$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" -noninteractive -noprofile -file $PATHTOTHEPOWERSHELLSCRIPTYOUARECURRENTLYRUNNING' -executionpolicy bypass exit }

于 2020-02-12T18:08:07.217 回答