我最近花了很多时间来完成这项工作。我发现了几十个无法连接的帖子;但答案很少。这些是我的学习:
Sage Timberline Office,现在命名为 Sage CRE 300,使用 Pervasive SQL 数据库。他们的升级路径是到 2019 年底向 SQL Server 升级。
您可以使用 2 个 ODBC 连接进行连接:
1. 使用原生 Pervasive ODBC 驱动程序
ODBC 驱动程序包含在免费的 Pervasive Client 中。只需搜索最新安装。
包括 32 位和 64 位驱动程序。
PHP 允许您通过一个简单的连接字符串进行连接,例如:odbc_connect("Driver={Pervasive ODBC Interface};ServerName=myserver;ServerDSN=mydsn;", "", "", SQL_CUR_USE_ODBC);
Pervasive 有很多可用的最新文档。
一个巨大的缺点:您只能读取数据。Sage 字段是内部标记的,需要密码才能进行更新。Sage 不会提供密码;即使是为了报酬。(我试过了)。
2.使用Sage提供的ODBC驱动
获取 ODBC 驱动程序的唯一方法是安装 Sage 客户端。(但请继续阅读,因为您可能无论如何都不想这样做)。
Sage ODBC 驱动程序称为 Timberline Data,是 Simba 产品。
该驱动程序仅提供 32 位版本。
驱动程序不仅仅是接口: - 普遍的表和字段名称很短;这个 ODBC 驱动程序就像一个提供长名称的翻译器。这些长名称有 2 个版本。决定你想使用什么并坚持下去。- Sage ODBC 驱动程序允许更新字段。并非所有领域;只是 Sage 允许您更改的字段。如果更新至关重要,那么这是您唯一的选择。
这是官方的连接字符串,以及如何在 PHP 中使用它:
odbc_connect("Driver={Timberline Data};UID=Mark;PWD=sage123!;DBQ=C:\Documents and Settings\All Users\Application Data\Sage\Timberline Office\Data\Construction Sample Data;CODEPAGE=1252;DictionaryMode=0;StandardMode=1;MaxColSupport=1536;", "", "", SQL_CUR_USE_ODBC);
我没有用UID=Mark;PWD=sage123!;
当然,请确保将所有反斜杠加倍。C:\\Documents and Settings\\All..
Sage 声明他们的 ODBC 驱动程序仅在 MS Office 产品上进行过测试;但它也适用于 C++、C# 等。(Per Sage 支持。)
除了以下例外:我无法在 C# 或 PHP 的连接字符串中使用 UNC 路径。MS Access 使用 UNC 路径连接没有问题。我无法让 PHP 使用该字符串。映射驱动器没有帮助;他们可能对你有用。
提示:
- 确保为 Sage ODBC 驱动程序使用 PHP 32 位;64位不行!
- 测试与 MS Access 连接到 ODBC 驱动程序很容易;它是获取表和字段名称以及确认连接字符串的好方法。
- 我最终设置了一个 Web 服务器并在 Sage 服务器上安装了一个 PHP 实例。这有以下好处:
- 无需在您的 Web 服务器上安装 Sage 客户端 (500MB)。
- 如果您以 64 位运行主站点,则提供 32 位选项。
- UNC 路径没有问题