在PB中实现数据录入维持序号连续性的简单实现[1]

在PB中实现数据录入维持序号连续性的简单实现[1],第1张

在实际开发应用程序中 常常会碰到数据行增加 插入 删除要求保持数据行的某一字段值的连续性 如在职工表中希望按职务高低赋予不同的连续的值 以便按职务高低进行显示 在制定工作任务或计划时能体现 … 连续的子项目 在此将此类要求连续的值称为序号 则要求程序能实现以下功能

)增加(追加)数据行时 能根据当前数据的总行数(n) 追加新序号为(n+ )

)插入数据行时 能根据当前所在行的序号(r) 将序号大于和等于(r)的值都加上 即序号(r)被赋予给新 插入的数据行 而原来序号r r+ … n的数据行序号变为r+ r+ … n+

)删除数据行时 能根据当前所在行的序号(r) 将序号大于和等于(r)的值都减去 即原来序号r r+ … n的数据行序号变为r r … n

对于程序员来说 实现上述三个功能逻辑上来说比较简单 但对于具体开发语言实现起来却有一定的难度 特别是当序号是关键字组成之一时 更是较为困难 本人曾用Delphi开发一订货程序为实现订货明细录入具有以上功能 竟然为此编制了三个后台存储过程 才得与实现 虽可在前台实现但数据行大于几十行时 速度其慢无比 而当时一个订货明细数据行一般在千条以上

而在Powerbuilder在保证较好的响应速度 可直接在前台实现上述功能 简直是小菜一碟 这主要是Powerbuilder与Delphi对数据控制的机制不同而造成的

下面就在Powerbuilder中实现上述功能的方法举例予以说明

创建一个employee表 如下

create table employee(

serial number //序号

name varchar ( ) //姓名

duty varchar ( ) //职务

primary key(serial) //设置字段serial为主键

假设表中将插入如下数据 要求按职位高低进行显示 在此例中序号即表示了职务的高低

序号  姓名  职务

  board chairman  董事长

  general manager  总经理

manager  经理

创建一个性新的库 称作autoserial pbl 以及一个应用程序对象 称作a_autoserial

使用DataWindow画板创建一个数据窗口对象dw_employee

Data Source选择Quick Select或SQL Select

Presentation Style选择Grid

Table 选择刚创建的employee

Selection List 选择serial name duty (注意serial字段在Selection List中的位置)

    使用Window画板创建一个窗口w_autoserial 并在窗体中放入以下控件

控件名   属性   值

DataWindows Control   Name  dw_

DataWindows Object   Name   dw_employee

HScrollBar   TRUE

VScrollBar   TRUE

Command Button   Name   cb_insert

Text   插入

Command Button   Name   cb_add

Text   增加

Command Button   Name   cb_delete

Text   删除

Command Button   Name   cb_save

Text   保存

lishixinzhi/Article/program/PB/201311/24614

用计算列(Computed Field), *** 作方法:打开数据窗口,主菜单insert-control-Computed Field,然后在你想插入序号列的地方点一下,d出一个对话框,在Expression框中写 getrow() ,最后点确定,就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6739069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存