CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请教一个关于多客户端软件在自动增加编号的问题!谢谢

楼主talentmykaka(小林)2006-03-04 20:23:33 在 .NET技术 / C# 提问

如何在多客户端软件下实现编号自动增加得问题?如,产品编号;病人就诊号;发票号等等,要是在单机使用的软件上,可以直接在数据库中读取最大编号,然后加1就可以了,在要是在多客户时,就不行了,因为要是2个以上的人同时读取数据时,就不正确了~有什么方法可以解决这样的问题呢?想了很久,一直没什么头绪,请大家指教,谢谢 问题点数:20、回复次数:12Top

1 楼LHA(心动)回复于 2006-03-04 21:56:27 得分 0

存储过程呀!  
   
  假设你使用表IDTable来存这个序号  
   
  存储过程里面   :  
   
  开始事务  
   
  读取ID号  
  ID号+1   存入数据库  
   
  提交事务  
   
   
  Top

2 楼feiyun0112(http://feiyun0112.cnblogs.com/)回复于 2006-03-04 22:24:42 得分 0

一样的用,只需要把编号字段设为关键字  
   
   
   
   
   
   
  **********************************  
  *本人主要使用VB+MS   SQL,C#略知一二  
  *                                                                  
  *如有相关问题需要帮助                          
  *                                                                  
  *可发短消息告知链接          
  *  
  *助人为快乐之本!                    
  **********************************  
   
   
  Top

3 楼xinyangt(信仰t)回复于 2006-03-04 22:54:33 得分 0

直接用你使用的数据库中自身提供的 标识自动增加列来放id 如果还有担心的话 再写个 触发器 来保证就可以了Top

4 楼talentmykaka(小林)回复于 2006-03-05 02:42:36 得分 0

可能大家理解错我意思了~上面的方法只能保证数据库中数据的唯一性,我是想在读取数据时就做到唯一性,比如从数据库中读取最大编号后,加1并赋值给TextBox1.Text,这是要是有2+客户端同时读取的话,因该这些客户端的TextBox1.Text值是一样的,怎么能做到不一样?按先后读取的顺序做个类似缓冲池一样的处理?Top

5 楼talentmykaka(小林)回复于 2006-03-05 13:22:40 得分 0

自己顶Top

6 楼dxef(丁学)回复于 2006-03-05 13:31:42 得分 0

我是做医院信息管理系统的,这种情况我们通过加操作员区分,每个操作员有自己的流水号  
  比如101用户产生的是:200603071010001 200603071010002 20603071010003  
  而另一个用户102则是:200603071020001 200603071020002 20603071020003  
  这个流水号最好用一个单独的表存放,只需要每个操作员一条记录就OK了  
  比如:  
  101       0001  
  102       0005  
  每天第一次生成时都重置一下,所有编号都可以采取这种方式,对以后的统计查询也有一定好处,可以通过拆分字符串获取到这一流水的时间和操作员Top

7 楼sarcophile(食肉动物)回复于 2006-03-05 13:58:06 得分 0

我明白你的意思,我的做法是保存之后才有编号,如果不保存就使用(比如打印)的话,就提示:没有有效的(订单)编号,设为000000。保存之后再读出来,就可以有正确的编号了  
   
  不知道有没有更好的方法,反正我是没想出来,gzTop

8 楼xinggg(风之渡)回复于 2006-03-05 14:19:44 得分 0

保存之前就取编号当然也可以了,只要用一个专门放编号的表,再加锁(不过会比较耗费资源),不过问题是你同时两个人取,然后先取的那个,他的编号并没有使用,那这时就会出现跳号了Top

9 楼talentmykaka(小林)回复于 2006-03-05 23:59:44 得分 0

xinggg(风之渡)    
  我以前就用过你的方法,就是因为无法处理跳号的问题,所以才不用了。  
   
  dxef(丁丁)    
  我也作过医院的HIS系统,使用分配给每个操作员一段编号的方式,但这种方法有时在组长查询的时候不太方便,缺少一些连续性。  
   
  我一直向寻找到一种能在多客户端软件下能连续编号的好方法,希望大家能讨论讨论。Top

10 楼yuanarea(Sail before)回复于 2006-03-06 09:28:00 得分 0

我没做过医院业务流系统,不过听大家的叙述可以认为是  
   
  sarcophile(食肉动物)   的方法,可以存在废弃的编号   -   跳号出现  
  解决可以通过第一次查询时(或固定时间)重新排号  
  (问一下,如果废弃的编号记录是否需要保存在数据库)  
   
  dxef(丁丁)的方法,对应编号到ID,我开始也是这么想的,看来是理解错了,编号是序列的.    
   
  既然有废弃的号存在,你这种想法更本不可能一步实现~,  
  不过考虑先化出1定区段的号(50个),废弃的编号等待优先重新利用,一个区段用完后在申请另一个区段,随后可根据时间先后排序,也可根据编号顺序显示,有需要可以重新编号Top

11 楼aa790312(air)回复于 2006-03-06 09:34:01 得分 0

Application.LOCK  
  Application.UnLOCK  
   
  这样的控制就可以了  
  Top

12 楼xinggg(风之渡)回复于 2006-03-06 22:19:57 得分 0

要么这样,实现未用号回收,回收到一张表里,每次申请,可以根据要求取回收号或是新号Top

相关问题

  • 寻找邮件客户端软件
  • 请推荐一个对数据库进行查讯或者增加删除记录的客户端用的软件.
  • 建议发布CSDN论坛客户端软件!
  • 客户端装何软件才能聊天?
  • Exchange server 2000可以安装管理客户端软件吗?
  • oracle 的客户端要什么软件,(急!请教!)
  • 请ftp客户端软件使用高手进来一下
  • 各位给推荐一个FTP客户端软件吧.
  • 各位给推荐一个FTP客户端软件吧.
  • 紧急求助:用JAVA编写FTP客户端软件

关键词

  • 数据库
  • 客户
  • 软件
  • 查询
  • 数据
  • 系统
  • 编号
  • 操作员
  • 号
  • 客户端

得分解答快速导航

  • 帖主:talentmykaka

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo