//四个按钮:cb_first,cb_next,cb_prior,cb_last
第一条
dw_1.ScrollToRow(0)
pb_prior.enabled=false
pb_next.enabled=true
前一条
integer row_current
pb_next.enabled=true
row_current=dw_1.getRow()
if row_current <=2 then
row_current=dw_1.ScrollPriorRow()
pb_prior.enabled=false
else
row_current=dw_1.ScrollPriorRow()
end if
下一条
integer row_count
integer row_current
pb_prior.enabled=true
row_current=dw_1.getRow()
row_count=dw_1.RowCount()-1
if row_current= row_count then
row_current=dw_1.ScrollNextRow()
pb_next.enabled=false
else
row_current=dw_1.ScrollNextRow()
end if
最后一条
//定义参数 表的总行数
pb_next.enabled=false
pb_prior.enabled=true
integer row_count
//得到表的总行数
row_count=dw_1.RowCount()
//数据窗口滚动到表的最后一条记录
dw_1.ScrollToRow(row_count)
插入
long row_number
dw_1.reset()
row_number=dw_1.insertrow(0)
删除
long current_rownumber
integer emp_no
current_rownumber=dw_1.getrow()
emp_no =dw_1.getitemNumber(current_rownumber,1)
if MessageBox("提示","确认要删除?",Exclamation!,YESNO!,1)=1 then
dw_1.deleterow(current_rownumber)
dw_1.scrollToRow(dw_1.getrow())
end if
从其他表中删除该员工的记录
delete from emp_marriage where emp_no=:emp_no;
修改是否成功
if dw_1.update()=1 then
commit;
dw_1.resetupdate()
MessageBox("提示","数据更新成功")
else
rollback;
MessageBox("error","数据保存失败")
end if
从数据窗口中获取数据
单条:假设我们要读取dept_id字段的第一笔数据,可以用下列方式表示∶li_id = dw_1.object.dept_id[1]
假设我们要读取第一行中第二个字段的数据,可以用下列方式表示∶ls_name = dw_1.object.DATA[1,2]
假设我们要读取dept_id字段的所有数据,可以用下列方式表示∶li_array = dw_1.object.dept_id.CURRENT
假设我们要读取过滤缓冲区 (filter buffer) 内dept_id字段的第一笔数据,可以用下列方式表示∶li_id = dw_1.object.dept_id.Filter[1]
假设我们要读取从第二笔数据的第一个字段到第三笔数据的二个字段之间的数据,表示∶lstr_array = dw_1.object.DATA[2,1,3,2]
假设我们要读取整个第二笔的数据,可以用下列方式表示∶lstr_dept = dw_1.object.DATA[2]
使用GetItemX ( )函数 x为string number等
lstr_name = dw_1.getitemstring (li_count , "emp_name") li_count为哪一条
多条:string ls_name[ ]
ls_name = dw_ 1.object.emp_name.current
数据的读取 一般格式∶数据窗口控件.Retrieve ( ) 返回个数 ,-1为错误
增加数据 数据窗口控件.InsertRow (行数) 参数为0加到最后
数据的删除 数据窗口控件.Deleterow (行数)
数据的过滤l 数据窗口控件.SetFilter (条件字符串).
数据窗口控件.Filter ( ) 用法∶将主要缓冲区 (Primary Buffer) 内不符合过滤条件的数据移到过滤缓冲区 (Filter Buffer)内。
例子:string ls_exp ls_exp = "dept_id = 100" dw_1.SetFilter (ls_exp) dw_1.Filter ( )
排序 dw_1.SetSort ("dept_id") dw_1.Sort ( )
将数据从所有的缓冲区 (Buffer) 中清除 dw_1.ReSet ( )
计算数据数目。例如∶dw_1.Rowcount ( ) 类似: .DeletedCount ( ) .ModifiedCount ( ) .FilteredCount ( )
数据窗口的滚动 数据窗口控件.ScrollToRow (行数)
数据窗口属性改变:
描述数据窗口对象本身颜色,可以表示如下∶long ll_color ll_color = dw_emplist.Describe ("DataWindow.Color")
描述数据窗口对象内标题 dept_id_t 的颜色,可以表示如下∶long ll_color ll_color = dw_emplist.Describe ("dept_id_t.Color")
修改数据窗口对象本身颜色,可以表示如下:dw_emplist.Modify ("DataWindow.Color = 255")
修改数据窗口对象内标题 dept_id 的颜色,可以表示如下∶dw_emplist.Modify ("dept_id_t.Color = 255")
假设当我们希望在程序运行阶段才给予下行条件∶薪水超过 50000 时显示红色,低于 50000 时显示黑色。程序的写法如下∶
ls_modstring = "Salary.Color = '0~tIf (Salary > 50000,255,0) '"
dw_1.modify (ls_modstring)
//定义要打印的页码
dw_1.Modify("DataWindow.Print.Page.Range='"+sle_1.text+"'")
dw_1.print()
//取到当前是第几页
dw_1.describe("evaluate('page()',"+string(dw_1.getrow())+")")
//注意返回值是STRING型的
//每15行统计一次
在 summary 栏中写 ceiling(Getrow()/15)
//如何判断当前行是不是当前页中的最后一行
if dw_1.getrow()=long(dw_1.describe("datawindow.lastrowonpage")) then
else
end if
本文介绍数据窗口的基础操作,包括导航、插入、删除、修改记录,以及数据筛选、排序和读取的方法。通过示例展示了如何使用不同的函数实现这些功能。

571

被折叠的 条评论
为什么被折叠?



