Java軟件報(bào)表軟件技術(shù)博客

          java報(bào)表軟件技術(shù)匯總 java報(bào)表軟件制作 報(bào)表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理

          場(chǎng)景描述

          如下圖所示報(bào)表,科目名稱欄目里面的數(shù)據(jù)不是從數(shù)據(jù)庫(kù)中拖曳擴(kuò)展得來(lái)的,而是直接在單元格中輸入,需要將每個(gè)科目的期初余額和期末余額填報(bào)入庫(kù),數(shù)據(jù)庫(kù)中有科目ID、會(huì)計(jì)科目、期初余額和期末余額幾個(gè)字段,在填報(bào)時(shí),將每一行數(shù)據(jù)都填入到一張數(shù)據(jù)表中,本來(lái)要想將所有科目都填報(bào)入庫(kù),則需要添加多個(gè)內(nèi)置SQL,會(huì)非常影響填報(bào)效率,今天我來(lái)告訴大家可以在一個(gè)內(nèi)置SQL中為單個(gè)數(shù)據(jù)表字段綁定多個(gè)單元格,即單元格組。


          實(shí)現(xiàn)思路

          報(bào)表填報(bào)屬性中為某個(gè)字段綁定單元格組,如下圖,數(shù)據(jù)表中的會(huì)計(jì)科目科目代碼字段在一個(gè)內(nèi)置SQL中分別綁定了一個(gè)單元格組,那么在執(zhí)行填報(bào)功能的時(shí)候,報(bào)表開(kāi)發(fā)工具FineReport后臺(tái)會(huì)自動(dòng)將單元格組根據(jù)位置拆分為多條內(nèi)置SQL。


          如上填報(bào)屬性綁定單元格示例,在執(zhí)行填報(bào)過(guò)程的時(shí)候,就會(huì)拆分為以下4個(gè)內(nèi)置SQL分別執(zhí)行:

          [uuid(),A2,B2]、[uuid(),A3,B3]、[uuid,A4,B4]、[uuid(),A5,B5]

          注:拆分內(nèi)置SQL時(shí)是根據(jù)位置拆分,并且當(dāng)單元格和單元格組并存的時(shí)候,單元格的值重復(fù)根據(jù)單元格組內(nèi)單元格個(gè)數(shù)進(jìn)行復(fù)制。

          和分別定義4個(gè)內(nèi)置sql一致,4個(gè)uuid的結(jié)果是不一樣的,并且其中一個(gè)失敗,其他兩個(gè)都會(huì)回滾,保持事務(wù)的一致性

          注:綁定單元格組是先拆分為多個(gè)內(nèi)置sql入庫(kù)規(guī)則,然后再形成SQL語(yǔ)句提交入庫(kù),而不是直接形成sql,因?yàn)閱卧竦闹悼赡芤彩菙?shù)組。

          示例

          以描述中的模板樣式為例,我們?cè)趙eb端錄入幾個(gè)會(huì)計(jì)科目的期初余額和期末余額,然后通過(guò)單個(gè)內(nèi)置SQL將數(shù)據(jù)填報(bào)入庫(kù)。

          1、 模板樣式設(shè)計(jì)

          按照上圖所示樣式設(shè)計(jì)報(bào)表,期初余額和期末余額控件類型均設(shè)置為文本控件。

          2、報(bào)表填報(bào)屬性設(shè)置

          點(diǎn)擊模板>報(bào)表填報(bào)屬性,點(diǎn)擊添加按鈕,添加一個(gè)內(nèi)置SQL,為數(shù)據(jù)字段綁定單元格組,如下圖:


          注:?jiǎn)卧窠M手動(dòng)編輯的時(shí)候,單元格間的分隔符支持英文的逗號(hào)、分號(hào)和空格。

          另:如果單元格組內(nèi)單元格個(gè)數(shù)超過(guò)5個(gè),將不再顯示所有單元格,而是直接顯示“已經(jīng)選擇X個(gè)單元格”,如下圖:


          注:綁定多個(gè)單元格時(shí),不能使用公式,因?yàn)閱卧駭?shù)組是先拆分為多個(gè)內(nèi)置SQL,然后再形成入庫(kù)sql語(yǔ)句,而公式數(shù)組則是直接形成入庫(kù)sql語(yǔ)句,不會(huì)拆分為內(nèi)置sql。

          3、校驗(yàn)

          如果列的值設(shè)置為單元格組,則需要保證設(shè)置的各單元格組個(gè)數(shù)相等,這樣才能夠一一匹配起來(lái),不允許如一個(gè)列是3個(gè)單元格,一個(gè)列是4個(gè)單元格,在智能添加單元格組對(duì)話框時(shí)點(diǎn)擊確定或者在填報(bào)屬性界面修改之后點(diǎn)擊確定會(huì)彈出警告框,如下圖:


          4、效果查看

          點(diǎn)擊填報(bào)預(yù)覽,在前面4個(gè)科目輸入對(duì)應(yīng)的期初余額和期末余額,如下圖:


          注:由于在設(shè)置填報(bào)屬性的時(shí)候,單元格數(shù)組只綁定了前面4行的數(shù)據(jù),故我們這里只對(duì)前面4行操作。

          點(diǎn)擊提交按鈕,將數(shù)據(jù)入庫(kù),點(diǎn)開(kāi)日志面板,可以看到如下圖所示日志信息,從日志中我們可以看出內(nèi)置sql綁定的單元格數(shù)組的確是被拆分為多個(gè)內(nèi)置sql之后,在形成sql語(yǔ)句執(zhí)行提交操作:


          然后再新建通過(guò)數(shù)據(jù)集查看科目余額表數(shù)據(jù)表中的數(shù)據(jù),如下圖,可以看到更改的4個(gè)科目數(shù)據(jù)發(fā)生了變化:

           

          具體的模板設(shè)置可參考:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\TypicalApp\CellsArrayForm.cpt




          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乃东县| 龙胜| 新津县| 曲靖市| 峡江县| 开化县| 涟水县| 昭平县| 台江县| 井陉县| 永城市| 苍溪县| 眉山市| 潜江市| 武汉市| 长汀县| 英超| 元阳县| 五莲县| 莆田市| 肇东市| 奇台县| 九龙县| 濉溪县| 永济市| 廉江市| 阜宁县| 江口县| 新蔡县| 紫阳县| 通化市| 临湘市| 和硕县| 罗源县| 大英县| 蒙山县| 元朗区| 瓦房店市| 横山县| 靖宇县| 平顺县|