[转帖]自动生成票据编号(单用户)
原著:郭宝利<br/><br/> 编写如下函数:<br/> /*--------------------------------------------------------------------------<br/> * 函数名称:String gf_getbh(string as_bh)<br/> * 函数作用:生成一个编号。<br/> * 返 回 值:string类型的,编号。<br/> * 调用举例:ls_new = gf_getbh(ls_old)<br/> * 其中,ls_old为数据窗口中已经存在的当天的最大编号。<br/> * 编 写 人:郭宝利<br/> *-------------------------------------------------------------------------*/<br/> String ls_Part1//用来保存编码的前6位<br/> String ls_Part2//用来保存编码的后4位<br/> String ls_DbSn//数据库中的当天最大流水号<br/> string ls_AgrSn//参数中的流水号<br/> String ls_sn//新生成的编号<br/><br/> ls_part1 = Right(String(today(),'yyyymmdd'),6)<br/> ls_AgrSn = Right(as_bh,4)<br/><br/> //该SQL语句需要根据实际情况做调整<br/> select max(bh) into :ls_Dbsn<br/> from mpgl<br/> where substring(bh,1,6) = :ls_part1;<br/><br/> if sqlca.sqlcode = 0 then<br/> if IsNull(ls_Dbsn) or ls_Dbsn = '' then<br/> ls_Dbsn = '0000'<br/> else<br/> ls_DbSn = Right(ls_DbSn,4)<br/> end if<br/> if IsNull(ls_Agrsn) or ls_Agrsn = '' then ls_Agrsn = '0000'<br/> if integer(ls_Dbsn) < integer(ls_AgrSn) then<br/> ls_Part2 = String(integer(ls_AgrSn) + 1)<br/> else<br/> ls_Part2 = String(integer(ls_DbSn) + 1)<br/> end if<br/> ls_sn = ls_part1 + Right('0000' + ls_Part2,4)<br/> else<br/> ls_sn = ''<br/> end if<br/> return ls_sn<br/><br/> 在数据窗口中增加新记录时调用该函数。比如我们在命令按钮‘增加’的Clicked事件上编写程序,调用语句如下:<br/> Long ll_CurRow<br/> string ls_bh<br/> ll_CurRow = dw_1.InsertRow(1)<br/> dw_1.ScrollToRow(ll_CurRow)<br/> if dw_1.RowCount() > 1 then<br/> ls_bh = dw_1.GetItemString(2,'bh')<br/> else<br/> ls_bh = ''<br/> end if<br/> ls_bh = gf_getbh(ls_bh)<br/> dw_1.SetItem(ll_CurRow,'bh',ls_bh)
页:
[1]