| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1280 人关注过本帖
标题:关于单号的问题请帮助一下
只看楼主 加入收藏
ls_y041
Rank: 2
等 级:论坛游民
威 望:2
帖 子:173
专家分:56
注 册:2005-9-29
结帖率:95.24%
收藏
 问题点数:0 回复次数:13 
关于单号的问题请帮助一下
我有一个表,单号,配件,金额,数量,
想做成按单号对记录进行分类,以年月日+001为单号,在处理记录时不会做,请高手帮助一下,是如何处理的,
搜索更多相关主题的帖子: 单号 
2010-03-27 16:42
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11783
专家分:43421
注 册:2006-5-13
收藏
得分:0 
基本公式为:
nDh=dtos(date())*100+n
其中date()也可以用其他日期型变量替代,n为顺序编号。
我一般是先用selec 语句查找当日最大的单号,若没有查到,就用上面的公式(n=1),查到了就用当日最大单号+1。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2010-03-27 17:27
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
如果“单号”是字符型:
SET CENTURY on
SET DATE to ymd
?CHRTRAN(dtoc(date()),"/","")+"001"

相互学习,互相交流,共同提高。
2010-03-27 17:58
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
楼上所述:单机应用是可以的。赞同。但是,如果在网络上,多机(n台)同时共享,共同拥有不重复的连续单据号,解决起来,并不简单。然而,这个情况又很常用。比如:医院his系统,多台收款机,同时接受各个药房发来的药品处方,形成收款单据。并且要求:不论哪一台机子在收款,或同时收款,每天的收款单据号必须是连号的。比如:2010年3月27日的
单据号为: 100327001,100327002,100327003,。。。。。(注意:有的机子可能在操作时,作废一张或几张单据,因为有的病人,钱不够不能交款。然而,这张单据的单据号已经产生了,是在打开收款窗口时提前产生的,而不是交款后才产生。业务收款要求:必须提前产生单据号)这种情况,需要有共享数据库才能解决。


[ 本帖最后由 qingfameng 于 2010-3-27 23:26 编辑 ]
2010-03-27 23:02
ls_y041
Rank: 2
等 级:论坛游民
威 望:2
帖 子:173
专家分:56
注 册:2005-9-29
收藏
得分:0 
哪位有示例能不能提供一下,多用户下的,谢谢
2010-03-28 07:58
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
要求: 不论哪一台机子在收款,或同时收款,每天的收款单据号必须是连号的。
如果: 单据A的单据号已经产生了,单据B的单据号也产生了,单据C的单据号也产生了。现在因为某种原因取消了单据A。那么单据D的单据号如何符合要求的在共享数据库产生。暂时忽略时间上的先后。是否要检查是否连号的,才确定单据号呢。
2010-03-28 09:01
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
介绍一个多机同时收款操作,单据号仍然连续的方法,这是个人的小技巧,不保守了。希望大家多加指教。
1、建2个表。必须2个。a 表,b表。结构完全一样。结构很简单,只有一个字段。单据号 c(20).
2、用时间生成第一个单据号 比如:20100401-001.立即加号,成为 20100401-002 紧接立即放在 a表中。
  (无论哪台机子先上)此机就使用的是001号。使用期间是快速锁表和解锁改变表的记录值。
   即:取走第一个号,放上第二个号。
3、此时,如果多台机子同时上机,他们都会在原表的号上连续加号与变号。并各自使用所得单据号。
4、如果其中有台机子放弃此号,此号立即放在 b 表中。任何放弃的号,都放在b 表。
5、运行顺序:任何机子想得到单据号时,必须首先访问 b 表。取走符合条件的单据号,不需要访问a表。
   如果得到了符合条件的号,此号立即在b表作废。
6、首先访问b 表时,得不到预期号,立即访问a表,进行取号和变号。
7、各个分机得到的号,还有一个校正重号过程,(通过总库).不合格的重新进入上述过程。
   代码不再叙述。谢谢!


收到的鲜花
  • 茵梦湖2010-04-08 16:21 送鲜花  5朵   附言:思路很新颖~
2010-04-01 03:13
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11783
专家分:43421
注 册:2006-5-13
收藏
得分:0 
单据号可以在保存时正式计算出来(保存前先锁定表),这样就不会出现重复或不连续。保存后的单据若要删除则作逻辑删除,即专门用一个字段来表示该单据是否有效。

[ 本帖最后由 hu9jj 于 2010-4-1 08:10 编辑 ]

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2010-04-01 08:09
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
忽略时间上的先后,qingfameng的方法是有效的,学习了。
2010-04-04 13:48
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:0 
嗯,7楼的思路很新颖,在提高检索速度的同时,还可加强数据库的安全性,值得借鉴~~~粗粗看了一下,a/b两表似乎还可简化为1个表~~~


[ 本帖最后由 茵梦湖 于 2010-4-8 16:23 编辑 ]
2010-04-08 16:17
快速回复:关于单号的问题请帮助一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016929 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved