### 制作快逸报表说明
#### 数据源的配置
数据源是报表系统中的关键组成部分,它决定了报表从何处获取数据。在快逸报表中,数据源通常通过SQL语句来定义,以便从数据库中提取所需的信息。例如,在提供的内容中,我们可以看到一个SQL语句的例子:
```sql
SELECT a.TASKID,
a.PROJECTID,
a.TASKCONTENT,
a.STAFFID,
a.TASKTYPE,
a.PLANTIME,
a.ACTUALTIME,
a.TASKCOMPLETION,
a.STATE,
a.INSERTDATE,
(select projectname from Daily_Project d where d.projectid = a.projectid) projectname,
(select staff_name from t_sys_staff b where b.staff_id = a.STAFFID) staff_name
FROM DAILY a
WHERE 1=1
AND a.INSERTDATE BETWEEN ? AND ?
AND (? IS NULL OR (? IS NOT NULL AND a.STAFFID = ?))
ORDER BY a.INSERTDATE DESC, a.STAFFID, a.TASKID DESC
```
这个SQL语句的功能是从`DAILY`表中选取特定字段,并根据条件进行筛选。其中使用了子查询来获取项目名称和员工姓名。这些字段将被用来填充报表。
#### 脚本的编辑
报表系统的脚本编辑主要涉及使用各种编程语言或表达式语言来处理数据、控制报表的行为等。例如,在提供的内容中可以看到使用JavaScript和Ext.js框架来实现报表查询功能的部分代码:
```javascript
var button = new Ext.Button({
text: '查询',
handler: function() {
var b = begTime.getValue().format('Y-m-d');
var e = endTime.getValue().format('Y-m-d');
var id = comboStaff.getValue();
document.getElementById('ZH1RP' + rpName).src =
'http://132.97.172.70:8060/runqian/reportJsp/showReport2.jsp?raq=' +
rpName + '.raq' +
'&&startdate=' + b +
'&&enddate=' + e +
'&&staffid=' + id +
'&&staffid2=' + id +
'&&staffid3=' + id;
}
});
var begTime = new Ext.form.DateField({
fieldLabel: '受理时间从',
allowBlank: false,
format: "Y-m-d",
value: (new Date()).getFirstDateOfMonth(),
width: 150,
msgTarget: 'qtip'
});
var endTime = new Ext.form.DateField({
fieldLabel: '到',
allowBlank: false,
format: "Y-m-d",
width: 150,
value: new Date(),
msgTarget: 'qtip'
});
var getStaffStore = new Ext.data.JsonStore({
fields: ['id', 'text']
});
DwrSys.getStaffWorkPlan(function(data) {
getStaffStore.loadData(data);
});
var comboStaff = new Ext.form.ComboBox({
store: getStaffStore,
fieldLabel: '姓名',
displayField: 'text',
valueField: 'id',
typeAhead: true,
mode: 'local',
forceSelection: true,
triggerAction: 'all',
selectOnFocus: true,
msgTarget: 'qtip',
emptyText: '请选择',
width: 180
});
```
这里使用了Ext.js框架创建了一个查询按钮和两个日期选择器以及一个下拉列表框。当用户点击“查询”按钮时,会触发一个事件处理器,通过动态修改URL参数来调用报表显示页面,展示基于用户选择的时间段和员工的数据。
#### 表格的编辑
在快逸报表中,表格的编辑主要包括表头和数据集两部分。首先需要编辑表头,确定表格中包含哪些列。接着是数据集的编辑,用于指定每列数据的具体来源。例如,在提供的内容中提到了以下步骤:
1. **编辑数据集**:通过选择一个表并右击编辑数据集来增加一个新的数据源。
2. **编辑表数据部分**:点击单元格,输入`=ds1.Select(TASKID)`来显示特定字段的数据。如果需要分组,则可以使用`=ds1.group(TASKID)`。
#### 样式的编辑
样式编辑主要是为了改善报表的视觉效果,使其更加易于阅读和理解。这包括设置行背景颜色、前景颜色(包括字体的颜色)等。例如,在提供的内容中提到了以下方法:
1. **设置行背景颜色**:可以通过设置一个表达式`if(row()%2==0,-3342337,-3355393)`来实现奇偶行背景颜色的交替。
2. **设置前景颜色**:通过表达式`if(ds1.PLANTIME==0,-13421569,if(ds1.PLANTIME!=0&&ds1.PLANTIME!=ds1.ACTUALTIME,-65536))`来设置特定条件下字体的颜色。
以上内容详细解释了如何在快逸报表中完成从数据源配置、脚本编辑、表格编辑到样式编辑的整个流程。通过这些步骤,用户可以根据自己的需求定制出满足业务要求的报表。