2014-12-22 100 views
0

我在birt報告中很新,爲我的問題提供了一個合適的解決方案。我正在使用birt工具生成報告(.pdf),其中用戶通過複選框選擇員工並報告該員工已生成。現在,問題是即使我選擇了一個員工,多次調用員工數據的函數getemployeeData()也會嘗試,但我努力嘗試但沒有得到一個合適的解決方案。 我正在使用下面的代碼來描述我的問題。這調用多次Birt舉報電話多次

count=0; 
objBIRTController = contractandInvoice.model.BIRTConnection();  
month=params["monthId"].value; 
year=params["year"].value; 
empId=params["empId"].value; 
listMainData= objBIRTController.**getemployeeData**(month,year,empId); 

Here getemployeeData() is calling multiple times. 

在fecth其中listMainData數據被重複

腳本函數。

if(count < listMainData.size()){ 
    row["empName"] = listMainData.get(count).getEmpName(); 
    row["DOJ"] = listMainData.get(count).getDOJ(); 
    row["empCode"] = listMainData.get(count).getEmpCode();  
    count++; 
    return true; 

}

返回FALSE;

BirtConnection.java

public List<EmployeeDataVO> getemployeeData(String monthId1, 
     String yearId1, String empId1) { 

     In this method I am retriving list which contains the employee data. 

    } 
+0

您是否可以通過「多次調用即使選擇一位員工」來擴展您的意思:每次執行報表需要多少次調用?它是否總是用期望的employeeID調用?儘管存在這個問題,報告是否仍按預期呈現? – Dominique

+0

我的意思是說,如果我選擇一個員工getemployeeData,我提到的只被調用一次,如果我選擇兩個員工是兩次,這裏即使我只選擇一個員工getemployeeData函數多次調用,我的意思是說getemployeeData進入循環 – ketan110

回答

1

假設第一個腳本是底層腳本數據集的「開放式」的方法,因爲這種數據集報表執行過程中調用它觸發多次。例如:

  • 如果使用此數據集的表嵌套在外部表中,「開放式」方法將被調用用於外表的每一行。

  • ,如果我們通過一個從控制面板中的每個字段拖到一個到電網(這將是設計報告一個非常,非常糟糕的方式),請將數據集字段到網格「開放式」的方法將被觸發爲每個數據字段

爲了更好地理解:創建一個新的空白報告,複製你的3個報表參數和數據集中到它,只是通過控制面板上的整個數據集拖到報告正文中添加一個新表。然後運行這個新的報告,你會注意到「getemployeeData」只被調用一次,因爲數據集只綁定到一個報表元素(表)。

如果您需要更多解釋,請附上.rptdesign樣本。

+0

嗨,我已經解決了這個問題,通過添加hasMAP中的所有參數在onfetch事件我創建映射並將報告組件,並基於密鑰檢索每個組件onfetch事件 – ketan110