我想从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
答案 0 :(得分:1)
错误'不支持请求的3.308列数。将请求列的数量限制为最多1.000列。当数据库中的结果集具有超过1.000列时,由Invantive Query Tool引发。
当有数千列时,使用的网格变得非常慢。
但是,您仍然希望看到内容。目前有三种选择:
此问题的原因是Exact Online的XSD描述了所有可能的输出格式。但事实上,有时只有200个有时可能会返回数十万个可能的领域。在某些情况下,没有文档可用的字段,因此SQL开发人员只需要分析相关字段及其值的输出。
其他ERP平台也会出现类似问题,例如Twinfield或其他任何具有广泛XSD的平台,在XSD中各个级别的节点之间都有引用。
选项1要求您首先使用旧的Exact Online(XML)提供程序登录。它使用Inbertive SQL v1,如Invantive SQL grammar versions所述。此SQL版本不完全与ANSI兼容;当为空时,它会从结果集中删除没有值的字段。这将字段数减少了大约1.000倍。
然后,您只需右键单击单元格或使用导出格式“SQL select”复制字段名称,并使用相关字段替换查询中的“*”。
之后,您可以切换回用于XML和REST API的新Exact Online组合提供程序并继续工作。
作为替代方案,您还可以获取可用字段列表。这些可在数据字典视图systemtablecolumns
中找到。或者在将光标放在表名上并按下F4或从编辑菜单中选择“描述”后弹出的用户友好:
作为最后一种选择,您可以指示网格仅显示某些行具有非空值的列。结果网格有一个按钮,如下所示。请记住在运行查询之前激活它。