这种问题的解决办法很多。楼上各位都已经大概说了思路:1、同时操作时,锁定表,只允许一个用户操作。这样做是肯定不会产生错误。但是给用户的印象可能就不太好了。(同时两个用户操作,其中一个肯定是失败了)。2、每台电脑应该是装一个客户端吧,这种情况下,给每个客户端一个编号。产生的单据号中带上客户端编号也就不存在这个问题了。但是我估计得修改程序。而修改量应该不小。3、如果是用Oracle数据库,用数据库中的自增序列,绝没有重复,但缺点是只能生成顺序号。对于你来说可能有问题,因为一般单据号都是有一定规则的生成。所以这个就看你的业务能不能这样做了。4、如果是SQL 2000数据库,你可以用触发器结合存储过程解决这个问题。从网上搜一下存储过程生成序列号,一搜一大堆。大概思路是建立一个Insert的触发器,在触发器中调用存储过程生成单据号。个人推荐第四种方式,应该是最适合。你应该是使用SQL 2000数据。如果是Access数据库的话,建议赶快换掉吧!也没多少修改的东西。