舉例:
現在有3張表
student表 course表 class 表
學號 姓名 班級id id 學號 所修課程 班級id 名稱
001 peter jd001 1 001 英語 jd001 文科班
002 sam jd001 2 001 語文 jd002 理科班
003 tony jd001 3 002 數學
4 003 生物
現在要求做張水晶報表 實現
水晶報表中的能容:
section2 頁首 部分 為 (也就是不迴圈的部分) 班級名稱 : 文科班(通過資料集查出)
section3詳細資料 部分 要求實現 效果 : 學號 課程 姓名
001 英語, 語文 peter
002 數學 sam
1:按「班級」,「學號」分組
班級組主要是為了實現「section2 頁首 部分 為 (也就是不迴圈的部分) 班級名稱 : 文科班(通過資料集查出) 」
學號組則是為了實現課程合併的效果
2:做兩個公式,公式x1為:
c# code
whileprintingrecords;global
stringvar xx;
ifonfirstrecord then
xx:=elseif=
previous () then
xx:=xx +'
,'+
else
xx:=
;
公式x2為:
c# code
whileprintingrecords;global
stringvar xx;
xx;
將公式x1放在詳細資料節
把公式x2放在學號組的組頁尾,並將「學號 」,「姓名」欄位也放到學號組的組頁尾,即可實現該效果
公式1是將結果累加,公式2則是將結果顯示於組頁尾,兩個公式通過全域性變數xx實現資料共享。
3:關於用幾個表的問題,用3個表也可以,
把三個表在sql裡關聯好,取要用到的字段作為乙個表也可以。
備註:文章材料來自阿泰部落格
水晶報表 推模式
問題由來 公司換新系統,過渡期要和老系統共存,原報表使用odbc資料來源,因只有一台伺服器,所有新系統報表不能再使用odbc資料來源了,兩個系統的報表不能使用同一伺服器odbc資料來源 解決方案 方案一,修改新系統水晶報表的資料來源,改為oledb方式。方案二,修改水晶報表資料來源為推模式,在程式中...
水晶報表公式編輯
stringvar strx stringvar stry stringvar strz numbervar z strx totext stry totext mid strx,1,length strx instr strx,1 mid stry,1,length stry instr stry...
水晶報表的推模式
在乙個多層結構中,水晶報表的使用往往比較繁瑣 1 在專案中新增資料集,形成xsd檔案 2 利用xsd檔案,在水晶報表環境中生成報表 3 回到.net,新增rpt檔案 這樣做的壞處除了繁瑣,就是在ui層直接要訪問資料庫,將使得層次結構晚節難保。其實利用水晶報表的推模式,將很靈活的實現報表。思路是 事先...