1

尝试将我的模型与 Invantive Control for Excel 同步时,出现以下错误:

错误信息

这是完整的错误信息:

Type: System.Runtime.InteropServices.COMException
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Microsoft.Office.Interop.Excel.Range.Delete(Object Shift)
   at Invantive.Producer.Control.Utility.ResizeBlock(ModelCache modelCache, Workbook workbook, List`1 blocks, iea_blocks_v block, Cube currentCube, Cube desiredCube, Point3d startPoint, Int64 growLength) in File169:line 7968
   at Invantive.Producer.Control.Utility.AdjustBlockDimensionOneAxis(SystemWorkingContext context, ModelCache modelCache, Workbook workbook, iea_blocks_v currentBlock, Cube currentCube, Cube desiredCube, IEnumerable`1 anchoredBlocksResult, List`1 blocks, Point3d desiredStartPoint, Int64 growLength, iea_blocks_vBlk_repeat_rows_along adjustAxis, iea_blocks_vBlk_repeat_rows_direction adjustDirection) in File169:line 7293
   at Invantive.Producer.Control.Utility.AdjustBlockDimensions(SystemWorkingContext context, ModelCache modelCache, Workbook workbook, List`1 blocks, iea_blocks_v currentBlock, Cube currentCube, Cube desiredCube, Point3d desiredStartPoint) in File169:line 6617
   at Invantive.Producer.Control.SyncToDatabaseForm.SyncDownload(DoWorkEventArgs e) in File170:line 2173

解决此错误的步骤是什么?

编辑

Invantive Control中块的SQL语句是:

select division_hid
,      division_name
,      reportingyear_attr
,      years_balance_code_attr
,      years_balance_description
,      open
from   BalanceLines
where  years_balance_balancetype_attr = "B"
and    reportingyear_attr = $X{eol_year_to}

是对其值在查询中使用的$X{eol_year_to}命名范围的引用。eol_year_to

我在 Excel 表中添加了两列,一列用于垂直搜索 GL 帐户分类代码,另一列用于 GL 帐户分类描述。添加后,模型不再与 Exact Online 同步。

4

2 回答 2

1

Invantive Control 将数据放入 Excel 表格中。我已将公式添加到该表的最后两列。Invantive Control 可能不会改变这些公式,因为这会破坏 Excel 表格。

我们已将公式添加到 SQL 代码中。现在问题已经解决了。

于 2016-11-17T07:29:02.703 回答
0

您也可以从 Exact Online 一次性获取 GL 账户分类代码和描述,请使用以下内容获取所有 GL 交易的列表以及分类代码/描述:

select tln.division division_hid
,      sdn.description division_name
,      tln.financialyear finyear_number_attr
,      tln.financialperiod finperiod_number_attr
,      tln.glaccountcode glaccount_code_attr
,      tln.glaccountdescription glaccount_description
,      tln.journalcode gltransaction_journal_code_attr
,      tln.currency gltransaction_journal_currency_code_attr
,      tln.amountdc amount_value
,      tln.vatpercentage amount_vatpercentage
,      tln.description
,      tln.accountname account_name
,      sysdate nu
,      '=I_EOL_GL_ACTCLN_CODE(,$C{E,.,.,^+4,.})' glactclncode
,      '=I_EOL_GL_ACTCLN_DESCRIPTION(,$C{E,.,.,^+4,.})' glactclndescription
from   transactionlines tln
join   systemdivisions sdn
on     sdn.code = tln.division
where  tln.financialyear   >= $X{eol_year_from}
and    tln.financialyear   <= $X{eol_year_to}
and    tln.financialperiod >= $X{eol_month_from}
and    tln.financialperiod <= $X{eol_month_to}
order 
by     tln.division
,      tln.financialyear
,      tln.glaccountcode 

余额分类

在您的查询中,这将是:

select division_hid
,      division_name
,      reportingyear_attr
,      years_balance_code_attr
,      years_balance_description
,      open
,      '=I_EOL_GL_ACTCLN_CODE(,$C{E,.,.,^+3,.})' glactclncode
,      '=I_EOL_GL_ACTCLN_DESCRIPTION(,$C{E,.,.,^+3,.})' glactclndescription
from   BalanceLines
where  years_balance_balancetype_attr = "B"
and    reportingyear_attr = $X{eol_year_to}

列表达式

现在的流程是:

  • SQL 将指定期间内 Exact Online 的所有总帐交易加载到 Excel 中。
  • 通过按同步来执行此操作。
  • 然后对 Excel 公式I_EOL_GL_ACTCLN_CODEI_EOL_GL_ACTCLN_DESCRIPTION进行评估。

这些公式采用唯一的部门代码(公司)加上至少 GL 帐户代码。由于每个 GL 交易的 GL 帐户代码都不同,因此您希望引用查询的特定列的内容。您可以生成一个硬编码公式,其中包含实际的 GL 帐户代码。但最好从 Excel 中的另一个单元格中获取 GL 帐户代码。该$C{...}语法允许您在同步期间将其替换为单元格引用。请查阅在线手册和模型编辑器向导。

$C{E,.,.,^+4,.}手段:

  • 枢轴方法:使用 X/Y 方向在 (E)xcel 中。您也可以使用D从数据库到 Excel 的任何转置考虑,但很少使用。
  • .:当前块,如'.' 在 vi 中有时指的是“这里”。
  • .:当前工作表,如“。” 在 vi 中有时指的是“这里”。
  • ^+4: 列,当前 Excel 行的最左侧单元格 ('^'),然后是右侧的四个单元格。
  • .: 当前行

您还可以在第 2 列和第 2 行的列表达式中再添加两个坐标,以指示单元格范围。

于 2016-11-21T08:30:08.533 回答