问题标签 [ms-access-97]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
41 浏览

mailmerge - 尝试使用 UCanAccess 5.0.1 和 Jackcess 打开 Access 97 数据库时出错,邮件与 LibreOffice 合并

最近,我参加了一个 IT 考试,其中有一个关于使用 LibreOffice 与 Linux 操作系统和 Access 97 数据库作为数据源进行邮件合并的问题。问题指出,没有连接到在 Linux 上正常工作的 Access 97 数据库的连接器

在我必须选择的选项中,其中之一是将 Access 数据导出到 CSV 文件,然后在 LibreOffice 上针对 CSV 文件定义数据源。

另一种是直接针对 Access 定义一个 LibreOffice 数据源。

我有一些过去使用 UCanAccess 从 Access 2000 数据库中提取一些数据的记忆,所以即使说没有合适的连接器可用,我还是选择了第二个选项,将 LibreOffice 直接连接到 Access。

显然,正确的答案是导出为 CSV 并使用它。

我很好奇,我从 Office 97 示例中获得了一个 Access 97 数据库。名称是(西班牙语)Neptuno.mdb

当我尝试在 UCanAccess 的 console.sh 中打开它时,我得到的是以下内容:

示例数据库经常使用西班牙语字符(ñ、á、é、í、ó、ú 等)。在这些链接之后,除其他外:

SO链接1 SO链接2

我已经修改了一些代码片段来创建一个 jar 文件:

public class PruebaUCanAccess { public static void main(String[] args) { try { String base = "/home/some_username/access/office97_samples/NEPTUNO.MDB"; java.util.Properties propiedades = new java.util.Properties(); propiedades.put("jackcessOpener", "prueba.ucanaccess.CharsetOpener"); Connection conn= DriverManager.getConnection(String.format("jdbc:ucanaccess://%s", base),propiedades); try (ResultSet rsMD = conn.getMetaData().getTables(null, null, null, null)) { while (rsMD.next()) { String tblName = rsMD.getString("TABLE_NAME"); System.out.println(tblName); } } Statement st =conn.createStatement(); ResultSet rs=st.executeQuery("SELECT * FROM Clientes"); while (rs.next()) { System.out.println( rs.getString("NombreCompañía") + " , " + rs.getString("NombreContacto") + " , " + rs.getString("Dirección") + " , " + rs.getString("Ciudad") + " , " + rs.getString("CódPostal") + " , " + rs.getString("País")); } conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

而且我可以看到表名并包含正确拼写(即没有 ? 字符)。如果我包含我在 LibreOffice 类路径中生成的 jar,并将“;jackcessOpener=prueba.ucanaccess.CharsetOpener”添加到 LibreOffice 连接字符串,我设法在 LibreOffice 表和视图中查看拼写正确,并记录。

所以,关键是错误,当我创建一个链接到 mdb 的 odb 文件时也会出现错误,显然,错过加载表

任何人都可以对此有所了解吗?提前致谢。