學習筆記(3)--Using RAS SDK
2024-07-21 02:07:46
供稿:網友
using ras sdk
notes: 如果需要在運行時創建和修改報表,必須要使用ras提供的服務來實現。
1. installing sdk jar files ras sdk和ras server可以安裝在同一臺機器上,也可以安裝在不同的機器上。默認安裝下,sdk jar文件安裝在c:/program files/common files/crystal decisions/2.0/jars/(9.0)或c:/program files/common files/crystal decisions/2.5/java/lib/(10.0)。2. 不同的安裝方式和運行使用方式 ras服務可以單獨安裝和crystal report一起使用,也可以作為crystal enterprise的一個組件和它一起運行提供服務。在這兩種方式下,我們使用ras服務的主要區別在于和ras server建立會話,指定目錄和報表的方式的不同上。 a。establishing a ras session 在ce中,必須要首先擁有一個enterprise session然后才能建立一個ras session。通過調用ienterprisesession對象的getservice方法初始化一個ras session。這個方法返回一個ireportappfactory對象,這個工廠類提供在ce system中打開已存在報表和創建新報表的功能。 在standalone方式下,通過reportappsession來創建 b. specifying reports and folders 單獨版和集成版的ras服務的關鍵區別在于管理報表的不同方法。集成版的ras設計成允許用戶修改由ce infostore管理的報表對象,而單獨版的ras server設計為可以修改在服務器上的報表文件(.rpt files)。當打開和保存報表的時候需要指定哪張報表被打開以及要把報表保存到哪個目錄。 報表和目錄的指定方法如下: standalone模式下,指定報表和路徑需要提供文件路徑; ce下,指定報表對象需要提供一個infoobject的引用,或者提供它的id屬性。 ras sdk提供了應用以上兩種方式的應用編程接口。 c. backward compatibility 在ce中的ras server component兼容建立在standalone ras server上的應用。此時,當應用連接在ce中的ras server時,用戶會自動的以guest用戶身份登陸到ce中。ras server component訪問ce中的報表和不在ras服務器上的報表文件。如果在ce中取消guest用戶,那么這些應用就不能夠連接到ras server.3. accessing data sources ras可以使用許多中不同的數據源。從概念上,這些數據源可以分成以下幾類: a. runtime data sources ras可以使用運行時由程序生成的數據作為報表的數據源。這些數據可以從數據庫中取得,也可以從數據流中取得,還可以是通過應用程序從一般的文件中取得。 使用運行時數據源的方法: 。把要操縱的數據放入rowset對象中; 。創建一個dataset對象并且用rowset中數據填充; 。創建一個rowsetcontroller對象; 。使用rowsetcontroller的方法分別設定數據源。 此時動態數據源就可以使用了。 注:如果創建一個基于data set數據源的報表,那么使用的數據不會和報表一起保存。當下一次重新打開報表的時候,必須要重做取得數據的過程來組裝報表。 b. persistent data sources 使用持久數據源的特點在于數據的生存期超越了運行時期。使用持久數據源主要適用于使用crystal report創建的報表。由于ras鏡相了crystal reports的所有功能,所以ras也可以使用這些持久數據源。 在ras中可以使用以下三種途徑獲取數據源: 。使用一個已經存在的報表的數據源; 。創建一個新的數據源; 。使用connectiondirmanager對象選擇一個數據源:connectiondirmanager對象允許瀏覽ras上的所有數據源。這些數據源由一個樹型結構管理,可以通過connectiondirmanager的方法訪問。 c. javabean custom data sources 為了使用一個自定義的數據源,可以使用javabean(或者一個沒有擴展bean類型的java類)來作為數據源。 方法如下: 。創建一個說明自定義數據源的java類:這個類象一個java beans connectivity data source一樣為創建crystal reports提供服務。這個類需要以下特征: 構造函數不能帶參數; 作為“tables”被使用的方法必須返回一個resultset對象; statement對象必須使用resultset.type_scroll_sensitive 和 resultset.concur_read_only參數來創建。 注:返回resultset的方法可以帶參數,這將被crystal reprots當做存儲過程參數對待。 。引用一個java類來為報表提供數據:要提供給這個類上面自定義數據源類的類名和取得數據的方法,即返回resultset的方法。