2

我想在 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
4

1 回答 1

1

错误“不支持请求的 3.308 列数。将请求的列数限制为最多 1.000 列。当来自数据库的结果集具有超过 1.000 列时,Invantive 查询工具会引发。

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

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

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

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

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

选项 1:确定列列表

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

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

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

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

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

列列表

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

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

隐藏空列

于 2016-12-14T10:26:27.923 回答