使用Exvantive Control for Excel同步Exact Online GL事务错误:“您正试图在工作表上的表格中移动单元格”

当试图使用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帐户分类代码的垂直search,一个是GL帐户分类描述。 在此之后,模型不再与Exact Online同步。

您也可以一次从Exact Online获得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} 

列expression式

现在这个过程是:

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

这些公式采用独特的分部代码(公司)加上至lessGL帐户代码。 由于总帐科目代码因总帐交易而异,因此您要引用查询中特定列的内容。 您可以使用实际的GL科目代码生成硬编码的公式。 但是最好从Excel中的另一个单元格取得GL帐户代码。 $C{...}语法允许您在同步期间将其replace为单元格引用。 请查阅在线手册和模型编辑器向导。

$C{E,.,.,^+4,.}表示:

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

您也可以为列2和列2的列expression式添加两个以上的坐标以指示单元格范围。

Invantive Control将数据放入Excel表格中。 我已经将公式添加到此表的最后两列。 不成功的控制可能不会移动这些公式,因为这将打破Excel表。

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