2012-02-09 68 views
1

我是一個總新手BIRT,我不是一個JavaScript專業版。我使用birt從我的數據庫中獲取一些信息來創建一些報告。我有一個列的IP地址作爲字符串。 BIRT爲表格提供了一個排序部分,我在那裏有這個表達式;如何使用JavaScript對BIRT上的IP地址進行排序?

if(params["sorting"].value=="startdate") 
dataSetRow["r_date_0"] 
else if(params["sorting"].value=="enddate") 
dataSetRow["r_date_1"] 
else if(params["sorting"].value=="ipaddress") 
dataSetRow["r_vchar_2"] 
else 
dataSetRow["r_vchar_3"] 

這是工作完美的開始日期和結束日期,但是當涉及到ipaddresses,它比較它們的字符串,所以在排序報告中,我看到像「2」是更大然後「199」。

我可以用'。'分隔ip地址。並解析它們爲整數,並比較我是否使用python或java,但我不知道如何在BIRT環境中使用javascript來做到這一點。

任何想法如何修改我的表達,以實現我的需求將不勝感激。

回答

3

使用數據集中的計算列,在那裏你改變你的IP地址的形式,他們可以進行排序,例如

var addrArray = dataSetRow["r_vchar_2"].split("."); 
var num = 0; 
for (var i=0;i<addrArray.length;i++) { 
    var power = 3-i; 
    num += ((parseInt(addrArray[i])%256 * Math.pow(256,power))); 
} 
num; 

您可以使用此字段進行排序,並顯示原始字段IP地址

相關問題