从Exact Online检索联系人时出错

时间:2016-12-13 12:29:31

标签: exact-online invantive-query-tool

我想从Exact Online中的一家公司检索所有联系人,并收到以下错误:

select * from AccountContacts

错误:

  

itgenusg026:不支持请求的3.308列数。将请求的列数限制为最多1.000列。

Type: Invantive.Configuration.ValidationException
   bij Invantive.Configuration.ValidationException..ctor(String errorCode, String errorMessage, String kindRequest, String localStackTrace, String nk, Exception innerException)
   bij Invantive.Producer.Windows.Forms.UltraGridExtensionMethods.AddColumnsToDataGrid(UltraDataColumnsCollection dataBandColumns, ResultSet results, Dictionary`2& columnNameIdMap, String[] excludedColumnNames, Func`2 allowEdit)
   bij Invantive.Producer.Windows.Forms.QueryTool.ExecuteStatement(IProgressNotifier notifier, String statement, ParameterList bindVariables, Boolean showResultsInGrid, Boolean showStatistics, Boolean memorizeStatisticsInSqlHistory, Boolean allowPaging)
   bij Invantive.Producer.Windows.Forms.QueryTool.FetchResultsFromSql()
   bij Invantive.Producer.Windows.Forms.QueryTool.<>c__DisplayClass107_0.<FetchData>b__0()
   bij System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bij System.Threading.ThreadHelper.ThreadStart()
   bij Invantive.Producer.Windows.Forms.UltraGridExtensionMethods.AddColumnsToDataGrid(UltraDataColumnsCollection dataBandColumns, ResultSet results, Dictionary`2& columnNameIdMap, String[] excludedColumnNames, Func`2 allowEdit) in File969:regel 368
   bij Invantive.Producer.Windows.Forms.QueryTool.ExecuteStatement(IProgressNotifier notifier, String statement, ParameterList bindVariables, Boolean showResultsInGrid, Boolean showStatistics, Boolean memorizeStatisticsInSqlHistory, Boolean allowPaging) in File948:regel 2847
   bij Invantive.Producer.Windows.Forms.QueryTool.FetchResultsFromSql() in File948:regel 2437

1 个答案:

答案 0 :(得分:1)

错误'不支持请求的3.308列数。将请求列的数量限制为最多1.000列。当数据库中的结果集具有超过1.000列时,由Invantive Query Tool引发。

当有数千列时,使用的网格变得非常慢。

但是,您仍然希望看到内容。目前有三种选择:

  • 选项1:使用旧的Exact Online(XML)提供程序确定列列表。
  • 选项2:在表名上使用F4(描述列)。
  • 选项3:在网格工具栏中使用“显示/隐藏空列”。

此问题的原因是Exact Online的XSD描述了所有可能的输出格式。但事实上,有时只有200个有时可能会返回数十万个可能的领域。在某些情况下,没有文档可用的字段,因此SQL开发人员只需要分析相关字段及其值的输出。

其他ERP平台也会出现类似问题,例如Twinfield或其他任何具有广泛XSD的平台,在XSD中各个级别的节点之间都有引用。

选项1:确定列列表

选项1要求您首先使用旧的Exact Online(XML)提供程序登录。它使用Inbertive SQL v1,如Invantive SQL grammar versions所述。此SQL版本不完全与ANSI兼容;当为空时,它会从结果集中删除没有值的字段。这将字段数减少了大约1.000倍。

然后,您只需右键单击单元格或使用导出格式“SQL select”复制字段名称,并使用相关字段替换查询中的“*”。

之后,您可以切换回用于XML和REST API的新Exact Online组合提供程序并继续工作。

选项2:在表名上使用F4(描述列)。

作为替代方案,您还可以获取可用字段列表。这些可在数据字典视图systemtablecolumns中找到。或者在将光标放在表名上并按下F4或从编辑菜单中选择“描述”后弹出的用户友好:

Column list

选项3:使用网格工具栏中的“显示/隐藏空列”。

作为最后一种选择,您可以指示网格仅显示某些行具有非空值的列。结果网格有一个按钮,如下所示。请记住在运行查询之前激活它。

Hide empty columns