PB数据窗口实现报表输出
褚健耘
PowerBuilder是目前非常流行的一种开发工具,其独到之处是数据窗口(DataWindow)技术。可以说,数据窗口是PowerBuilder的核心,在对数据库的开发过程中,无论是数据的录入、查询、统计还是报表的输出,都离不开数据窗口。笔者在实际工作中用打印数据窗口的方法实现报表的输出(见图1),方法如下:

图1 报表的数据窗口
一、建立含有如下控件的窗体:
| 控件 | name | text |
| checkbox | cbx_1 | 预览 |
| dropdownlistbox | ddlb_1 | 100 |
| dropdownlistbox | ddlb_orientation | 横向 |
| dropdownlistbox | ddlb_papersize | 宽行纸 |
| commandbutton | cb_1 | 打印 |
二、“打印预览”检查框的clicked事件:
string Is—count
if this.checked then
dw—1.Modify(″datawindow.print.preview=Yes″)
ddlb—zoom.enabled=TRUE
else
dw—1.Modify(″datawindow.print.preview=No″)
ddlb—zoom.enabled=FALSE
end if
三、“缩放”下拉窗口的selectionchanged事件:
dw—1.Modify
(″datawindow.print.preview.zoom=″+this.text)
四、“纸张方向”下拉窗口的selectionchanged事件:
string Is—orient
choose case Lower(Trim(this.text))
case ″横向″
Is—orient=″1″
case ″纵向″
Is—orient=″2″
case ″默认″
Is—orient=″0″
end choose
dw—1.Modify(″datawindow.print.orientation=″+Is—orient)
五、“纸张大小”下拉窗口的selectionchanged事件:
string Is—paper=″0″
choose case Lower(Trim(this.text))
case ″宽行纸″
Is—paper=″5″
case ″A3纸″
Is—paper=″1″
case ″A4纸″
Is—paper=″9″
case ″默认″
Is—paper=″0″
end choose
dw—1.Modify(″Datawindow.print.paper.size=″+Is—paper)
六、“打印”按钮的clicked事件:
dw—1.print()
运行环境:Windows NT4.0、Windows 98、PowerBuilder 6.0。