在多用户同时对一个表进行添加记录操作时。表中有一个"bh"。我想让“bh”不重复。我是这样做的:
在“保存按钮”事件中,先取已有“bh”最大值,然后加1作为新的"bh"。
可是上次两个人同时操作的时候就出现了两个编号相同的情况。我想这是他们同时按了“保存”的缘故。该如何防止“bh”相同呢?
在“保存按钮”事件中,先取已有“bh”最大值,然后加1作为新的"bh"。
可是上次两个人同时操作的时候就出现了两个编号相同的情况。我想这是他们同时按了“保存”的缘故。该如何防止“bh”相同呢?
解决方案 »
- 去除字符串中的字母
- $$$$$$ BMP 转 JPG 然后SAVETOFILE的问题 在线等待$$$$$$
- 如何具体制作帮助文件?
- 请教高手!为什么InternetCheckConnection这个函数我用不成呢!!
- Delphi 6.0 里自带BDE是5.01 而installshield 自带的BDE是5.11,请问是否兼容?我用installshield 6.22做安装程序时为何不能正确安装(已
- ADOTable没有ApplyUpdates怎么办?
- 谢谢vcshcn(黑色的星星)帮我得忙,给我源码,500送上,请进来领分
- 对于这样的网页上的一个table,有没有好的办法解析出来生成数据表。劳烦各位!
- to dancemaple 我可以接着请教吗?
- 本地数据库paradox中关于时间比较的问题
- ADOQuery的参数应该怎么赋??????????
- 帮忙看一下这段开发dBASE IV检测数据库是否存在的语句错在哪?急用,麻烦各位了。
begin
close;
sql.Clear;
sql.Add('select * from Table);
sql.Add('where bh=:bh);
parambyname('bh').AsString:=Trim(Edit1.text);
open;
if Not(IsEmpty)
then
begin
showmessage('编号重复');
Exit;
end;
end;
ADODataSetMaxbh.CommandText:='select Max(bh) as maxbh from 表 with (tablock)';
ADODataSetMaxbh.Open;
if ADODataSetMaxbh.FieldByName('maxbh').IsNull then
ADODataSet.FieldByName('bh').AsString:='1001'
else
ADODataSet.FieldByName('bh').AsFloat:=ADODataSetMaxbh.FieldByName('Maxbh').AsFloat+1;ADOCnn.CommitTrans;
xh:='000'
else
xh:= IntToStr(StrToInt(fields[0].AsString)+1);
如果要用表中最大的值+1,则需要进行锁定以防多人同时使用时重复。