C/S结构的程序,服务器数据库用的Access,没办法,人家要求用。
怎么解决多个客户程序同时对服务器上的数据库进行修改操作的问题???
怎么解决多个客户程序同时对服务器上的数据库进行修改操作的问题???
解决方案 »
- delphi 2005以上版本,启动界面会显示安装的第三组件,这是从哪里读取的信息?
- 例如我有一可执行文件,将该文件绑定在word文档上,打开word文档相当也执行该可执行文件.如何实现?
- 发现RAIZE控件一个BUG,使用过RAIZE控件的朋友进来看看
- 為什麼Printer.Canvas.TextOut(151,350,DBImage1)這樣的語句有錯,請高手指點,在線等,分不夠再加,謝謝!!
- 新装系统显卡(太阳花鐳2000)驱动找不到了,不知道为什么,网上down的都没有用?急啊!!谁能给点提示啊~~~~~~ SOS
- 谁用过Microsoft Project2000?来看一下
- QReport的问题?
- 请问各位同仁,如何编程来读取Outlook Express收件箱中的附件??谢谢(最好有原理有代码)
- 时间段查找问题
- 各位helpme~~~~~~~~~http://www.csdn.net/expert/TopicView.asp?id=263522
- 【大家帮个忙,我想中台电脑】
- 请问如何计算出cookie?
为了把问题描述得更详细一些, 我做了一个测试,放一个adoquery (select * from table1); 三个字段.
adoquery-->连接到adoconnection,
datasource连接 adoquery1,放一个dbgrid,控件,再放一个增加,一个修改 ,一个删除按钮.dbgrid的datasorce连接到datasource1, 我在form1的create事件里 with adoquery1 do
begin
active:=false;
sql.clear;
sql.add('select * from table1');
active:=True;
end;显示正常,1。点击添加操作; procedure Tform1.button1click(sender:object); //添加;
begin
Form2:=Tform2.create(application);
Form2.option:=0; //表示添加;
adoquery1.append;
Form2.showmodal;
end; procedure Tform1.button1click(sender:object); //添加;
begin
Form2:=Tform2.create(application);
Form2.option:=1; //表示修改;
adoquery1.edit;
Form2.showmodal;
end;
进入Form2后,(我在form2放了两个 dbedit用于显示数据.编辑数据);另外还有一个确定按钮, 一个取消按钮.Public
option:integer;Procedure Tform2.button1click(sender:object); 确定
begin
Try
Adoconnection.Beginstran;
ADOQUERY1.POST;
Adoconnection.commit;
except
showmessage('删除不成功'); 1.//这里的数据库错误类型是怎样确定的。
Adoconnection.rollback;
end;
end;问题:
不知道我上面写的是否合理,请大家指教。 我在单用户环境操作是没有问题的。
但当两个用户(我故意这么测试, A用户点击该模块的Form1增加按钮, B用户也点击该模块的增加按钮, 这样当其中一个用户A先点击Form2“确定”
保存成功,
但是当B用户点击“确定”按钮时, A用户其实已经修改了数据,B用户此时操作将不成功, 事务回滚。
?这个事务回滚的原因是什么。语句怎样写。大家是怎样控制的。
在ADOQUERY的 ONBeforePost里写ADOConnection1.BeginTrans; 然后在OnAfterpost里写 ADOConnection1.CommitTrans; 最后在OnPostError里写ADOConnection1.Rollback;就可以了