问题标签 [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.
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 中打开它时,我得到的是以下内容:
示例数据库经常使用西班牙语字符(ñ、á、é、í、ó、ú 等)。在这些链接之后,除其他外:
我已经修改了一些代码片段来创建一个 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 文件时也会出现错误,显然,错过加载表
任何人都可以对此有所了解吗?提前致谢。