我很擅长使用QODBC进行QuickBooks报道。我准备的第一个SELECT查询之一基本上在ReceivePayment表中标记客户现有未使用的付款,查询具有该同一客户剩余余额的发票。输出是(或应该是)按CustomerRefFullName分组的客户列表,第2列中未使用的付款总和,以及未结发票剩余的总余额之和。
这是一个相当简单的查询。当我将表作为静态表导入MS Access时,查询速度与预期的一样快。但是,当我对链接表运行查询时,生成结果需要15分钟。
这不应该发生。这是MS Access配置错误吗?我还缺少或不知道与QODBC配置有关的其他事情?任何帮助将不胜感激。
答案 0 :(得分:3)
我想告诉您,当您在Access& amp;中导入QuickBooks数据时运行查询,显然它将执行得更快,因为本地MS Access表中可用的所有数据(离线)。但是当您从链接表执行查询时,QODBC正在从QuickBooks获取数据。 QODBC是一个使用QuickBooks SDK的ODBC驱动程序。
QODBC的工作原理是通过ODBC接口接受来自应用程序的SQL命令,然后将这些调用转换为导航XML命令到QuickBooks Accounting DBMS,并返回符合查询结果的记录集。此驱动程序不是客户端/服务器产品,而是在运行时直接与QuickBooks应用程序通信。 QuickBooks是一个平面文件数据库,这个驱动程序不会将其更改为关系数据库,因此在使用此驱动程序进行开发时请记住这一点。
QODBC作为一个'包装'围绕Intuit SDK,客户最终可以使用标准数据库工具获取他们的QuickBooks数据;加快开发时间。
请记住,QODBC不是数据库工具,而是翻译工具。您请求的每个事务都必须通过大量复杂的XML事务进行翻译并传达给QuickBooks。
QuickBooks应用程序层需要处理这些XML请求。记录数量越大,XML请求越长,因此QuickBooks可能需要更多时间和内存来处理更长的请求。
我建议您通过QODBC设置屏幕启用QODBC状态面板 - >消息窗口 - >选择"显示驱动程序状态"和"显示优化器状态"选项。
然后,下次运行查询时,如果看到“正在等待QuickBooks”,则表示QuickBooks需要时间来处理请求。屏幕右下角将显示一个状态面板,将显示一个窗口,其中包含有关QODBC正在工作的信息。请注意QODBC花费最多时间或卡住并与我们分享的步骤。
我还建议您尝试在VB Demo上执行以下命令,看看它可以解决问题:
SP_OPTIMIZEFULLSYNC ALL
此命令将一些数据带到本地缓存,以提高查询的检索性能。我想建议你完全按照命令运行。以上命令可能需要一些时间取决于您在QuickBooks中的记录。可能需要2-5小时或更长时间取决于QuickBooks公司文件中的记录数。请让此命令完全运行不要终止此命令。不建议在构建Optimizer文件时终止/关闭应用程序。
参见: How to execute SP_OPTIMIZEUPDATESYNC or SP_OPTIMIZEFULLSYNC for Selected Tables
如果您仍然遇到问题,我请您从下面提到的链接&中提出向QODBC技术支持部门提供的支持票。提供所需信息:
还要分享有关您所面临问题的更多信息,以便我们能够快速找到问题。
我们可能需要以下信息,请在回复故障单时附上以下列出的文件。
1)QODBC设置屏幕的屏幕截图 - >关于(开始>>所有程序>> QODBC驱动程序,用于QuickBooks>> QODBC设置屏幕>>关于标签) 2)您正面临的问题的屏幕截图。 3)分享QuickBooks版本细节:在QuickBooks UI&上按f2;分享截图。 4)共享您正在使用的SQL语句。 将整个日志文件作为文本格式的附件共享 5)QODBC设置屏幕 - >消息 - >查看QODBC消息 6)QODBC设置屏幕 - >消息 - >查看SDK消息