我们首先看看数据管道的一些基础知识:
数据管道主要可以完成以下几个功能:
数据库之间数据的传送
修改表的结构,象主键标,是否可为NULL等
我们在Pipeline画板中创建一个管道对象时,必须说明以下这些参数:
Source Connection 源数据库
Destination Connection 目的数据库
Data Source 源表
Table 目的表
Option 管道操作
其中管道操作方式有:
Create: 添加表(表不能存在〕
Replace: 删除再添加表(表可以存在
Refresh: 删除再插入行
Append: 插入行
Update: 更新/插入行
管道对象属性:
RowsInError Long 管道中发现的错误的行数
RowsRead Long 管道已读取行数
RowsWritten Long 写入数据库的行数
DataObject String 管道对象名
Syntax String 建立管道对象的语法字符串
管道对象函数:
Cancel Integer 中止管道执行
ClassName String 返回用户对象的名称
GetParent PowerObject 返回父对象的名称
PostEvent Boolean 在用户对象的消息队列末增加一个事件
Repair Integer 修正目的数据库
Start Integer 执行管道
TriggerEvent Integer 送一个事件到用户对象并执行事件脚本
TypeOf Object 返回用户对象的类型
--------------------------------------------------------------------------------
要在程序中使用管道,必须要在Pipeline画板中创建一个管道对象,一个管道类型的
标准用户类对象和包含DataWindow控件的窗口。 PowerBuilder检测到任何管道错误后
将使用标准的dataWindow显示这个错误, datewindow 每个无效行显示全部的列,并显
示一条错误消息。在本例中,创建了3个管道对象:
p_emp_master_create,
p_emp_transaction_create,
p_emp_master_transaction_update.
p_emp_create为employee表建一个拷贝,作为本例的Master Table,
p_emp_transaction_create建立本例的Transaction Table,
p_emp_master_transaction_update根据所选部门和Transaction Table的内容修改Master Table相应记录,它的语法为:
SELECT "emp_pipe_transaction"."emp_id",
"emp_pipe_transaction"."emp_fname",
"emp_pipe_transaction"."emp_lname",
"emp_pipe_transaction"."dept_id",
"emp_pipe_transaction"."bene_health_ins",
"emp_pipe_transaction"."bene_life_ins",
"emp_pipe_transaction"."bene_day_care"
FROM "emp_pipe_transaction"
WHERE ( emp_pipe_transaction.dept_id = :department_id )
其中::department_id即为在数据窗口dw_dept中所选部门的id号。
管道类型的用户对象有2个:p_pipe_wmeter和p_pipe_wometer,它们都是从pipeline继承来
的,都包含有3个静态文本类型的实例变量:st_read,st_written,st_errors。 p_pipe_wmeter
在它的pipemeter事件中对它们赋值,在窗口的Open事件中把它们与窗口上的3个静态
文本控件联系起来,动态显示当前数据管道的进度。
总结:
要实现数据管道要完成以下几步:
1. 创建Pipeline类型的标准不可视用户对象p_pipe_meter
2. 在Pipeline中创建一数据管道(作为第5步的DataObject)
3. 创建一窗口(带一数据窗口控件PipeError和命令按钮〕
4. 在OPEN事件中创建一p_pipe_meter类型的iu_PipeLine实例变量
5. 设置iu_PipeLine的DataObject特性
6. 连接源数据库和目的数据库
7. 启动数据管道(按钮Clicked事件〕
8. 动态修改进度(数据管道的PipeMeter事件)
9. Cancel事件
10.管道修复
11.提示完成(PipeEnd事件〕
12.断开数据库,Destory用户对象。