• <menu id="w2i4a"></menu>
  • logo Fastreport.Net 教程2018(完結(jié))

    文檔首頁>>Fastreport.Net 教程2018(完結(jié))>>如何從報(bào)表腳本FastReport .Net在矩陣中創(chuàng)建計(jì)算字段

    如何從報(bào)表腳本FastReport .Net在矩陣中創(chuàng)建計(jì)算字段


    【下載FastReport.Net最新版本】

    通常,矩陣或其他匯總表用于會(huì)計(jì)和統(tǒng)計(jì)報(bào)表。讓我們確定摘要表是什么。

    摘要表是一種軟件工具,允許您重新組織和匯總表中所選的列和行數(shù)據(jù),以獲取所需的報(bào)表。摘要表對(duì)于大量數(shù)據(jù)特別有用。例如,您正在經(jīng)營像文具店這樣的小型企業(yè)。您想知道哪些產(chǎn)品具有最佳銷售率,或者本月銷售最好記錄是什么。分析它們需要大量的統(tǒng)計(jì)數(shù)據(jù)是非常費(fèi)力的。這里有一個(gè)摘要表,它將一段時(shí)間內(nèi)的數(shù)據(jù)組合在一個(gè)表中。

    處理用于創(chuàng)建匯總表的數(shù)據(jù)的主要操作是求和。但是,有時(shí)候,您可能需要自己的函數(shù)來計(jì)算某些列,例如總計(jì)。讓我們看一下使用報(bào)表腳本將計(jì)算字段添加到矩陣的方法示例。創(chuàng)建報(bào)表并將矩陣對(duì)象添加到“Data”區(qū)域。如您所知,要?jiǎng)?chuàng)建列,排水或單元格,您需要將表達(dá)式拖動(dòng)到相應(yīng)的區(qū)域。表達(dá)式可以是:數(shù)據(jù)字段,函數(shù),變量,總數(shù)。通常,數(shù)據(jù)面板中的任何對(duì)象。如果要從報(bào)表的腳本中填充矩陣,則將任何表達(dá)式添加到矩陣中,然后將其打開以進(jìn)行編輯并清除它,或輸入數(shù)字。這是矩陣的模板:

    FastReport

    要以編程方式將字段添加到矩陣,您需要為矩陣創(chuàng)建AfterData事件處理程序。

    FastReport

    讓我們繼續(xù)閱讀報(bào)表腳本。在生成的處理程序中,將列添加到矩陣:

     Matrix1.AddValue(new Object[] { "Accruals", "Salary" }, new Object[] { "1" }, new Object[] { 1000});
     Matrix1.AddValue(new Object[] { "Accruals", "Bonus" }, new Object[] { "1" }, new Object[] { 500});
     Matrix1.AddValue(new Object[] { "Accruals", "Penalty" }, new Object[] { "1" }, new Object[] { 200});
     Matrix1.AddValue(new Object[] { "Accruals", "Total" }, new Object[] { "1" }, new Object[] { 0});
     
     Matrix1.AddValue(new Object[] { "Accruals", "Salary" }, new Object[] { "2" }, new Object[] { 500});
     Matrix1.AddValue(new Object[] { "Accruals", "Bonus" }, new Object[] { "2" }, new Object[] { 300});
     Matrix1.AddValue(new Object[] { "Accruals", " Penalty" }, new Object[] { "2" }, new Object[] { 250});
     Matrix1.AddValue(new Object[] { "Accruals", "Total" }, new Object[] { "2" }, new Object[] { 0});

    請(qǐng)注意,列標(biāo)題的結(jié)構(gòu)由名稱枚舉 - “費(fèi)用”,“薪水”給出。在我們的例子中,通用標(biāo)題“Charges”有4個(gè)副標(biāo)題()。接下來,我們創(chuàng)建一個(gè)標(biāo)題為1的行。第三個(gè)參數(shù)是數(shù)據(jù)單元new Object [] {1000}的值。 我們添加了兩行數(shù)據(jù)。“總計(jì)”字段的值為零?,F(xiàn)在我們需要為它設(shè)置一個(gè)值。我們?cè)谘h(huán)中遍歷矩陣的所有行并設(shè)置結(jié)果的值:

    int[] rowIndices = Matrix1.Data.Rows.GetTerminalIndices();
     for (int i = 0; i < rowIndices.Length; i++)
     {
     rowIndex = rowIndices[i];
     SetValue("Accruals;Total", GetValue("Accruals;Salary") + GetValue("Accruals;Bonus") - GetValue("Accruals;Penalty"));
     }

    將rowindex變量添加到類中: private int rowIndex; 請(qǐng)注意SetValue和GetValue方法。將它們添加到類中:

    private void SetValue(string complexValue, float value)
     {
     int columnIndex = Matrix1.Data.Columns.Find(complexValue.Split(';'));
     Matrix1.Data.SetValue(columnIndex, rowIndex, value);
     }
     
    private float GetValue(string complexValue)
     {
     int columnIndex = Matrix1.Data.Columns.Find(complexValue.Split(';'));
     return new Variant(Matrix1.Data.GetValue(columnIndex, rowIndex, 0));
     }

    從標(biāo)題中可以清楚地看出,一種方法是獲取單元格的值,第二種方法是更改??。 運(yùn)行報(bào)表:

    FastReport

    所以我們計(jì)算了每行數(shù)據(jù)的總數(shù)。

    FastReport教程合集
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();