ehxz 发表于 2007-3-6 17:28:08

[转帖]自动生成票据编号(单用户)

原著:郭宝利<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) &lt; 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() &gt; 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]
查看完整版本: [转帖]自动生成票据编号(单用户)

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com