我的一段代码如下,在FROMCREATE事件里ADOConnection1.Open;procedure TForm1.Button1Click(Sender: TObject);
begin 
 ADOConnection1.BeginTrans;
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from test');
    ADOQuery1.Open;
end;打开两个该实例,第一个点击该按钮没有任何提示,这是正常的,
第二个实例也点击这个按钮,第一次点的时候没有提示(前一个事务没有结束,按理来说应该有信息提示才对呀),直到第二次点击的时候才提示‘不能运行多个事务’这样的提示,难道事务是对于单个进程的而言的吗?

解决方案 »

  1.   

    BeginTrans后要committrans或回滚来结束一个事物
      

  2.   

    当某个进程启动时,操作系统会分配4GB的空间给它,它们在操作系统中是独立存在的,你打开了两个同样的进程,操作系统自然会分配两次。
    至于你说的ADO连接数据库时,ADO控件执行这个事务,此时数据库是开一个线程来处理该事务;因此,跟你打开多个进程是没多大关系的。