| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4281 人关注过本帖
标题:关于远程访问数据,如何完善事物管理
取消只看楼主 加入收藏
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
结帖率:88.52%
收藏
已结贴  问题点数:20 回复次数:3 
关于远程访问数据,如何完善事物管理
我有一个小程序,需要同时远程添加记录到一个表和修改另外一个表,我的要求是两个操作必须都执行成功,如果一个失败了,则另外一个也取消,请问应该怎么做,能否帮我完善下,我的代码如下:
程序代码:
                   thisform.Enabled=.f.  &&查询期间不能再点击
                  WAIT "请稍等,正在上传数据" WINDOW AT 25,85 nowait
                  thisform.lianjie  &&生成字符串
                  IF  nhandle<=0    &&连接不成功
                       wait clear
                       MESSAGEBOX("数据库连接失败!!!",0,"错误信息") 
                             
                  ELSE     &&连接成功
                                  PUBLIC ac1,ac2
                                  Ac2=SQLEXEC(nhandle,"insert into jl (dw,ch,wz,qf) values (?dw_mc,?ch_value,?ziduan_name,?ziduan_value)")
                          Ac1=SQLEXEC(nhandle,"update ygc set &ziduan=?ziduan_value,sj=?shijian_value  where id=?ygc_id ")
                               
                                
                                  IF  Ac1>0 AND ac2>0
                                       = SQLDISCONNECT(nhandle) &&关闭连接
                                      wait CLEAR  &&清除等待窗口
                                      success=.t.
                                      RELEASE thisform
                                  ELSE
                                       = SQLDISCONNECT(nhandle) &&关闭连接
                                       wait CLEAR  &&清除等待窗口
                                       success=.f.
                                       MESSAGEBOX("返填数据失败!",0,"错误信息") 
                                       thisform.refresh        
                          
                                  ENDIF
                              
                    
                  endif   &&连接结束
                
                    thisform.Enabled=.t.  &&恢复正常状态
搜索更多相关主题的帖子: 远程 数据 thisform WAIT 连接 
2019-08-08 13:57
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
这几天没有看帖子,以为没有人回帖,没有想到有这么多回帖,非常感谢,但我对这个还不怎么懂,要慢慢消化几天,等有疑问再出来,所以不能结贴,再次感谢
2019-08-18 15:23
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
厨师王德榜师傅提到的TRY的用法有些复杂,一时半会弄不懂,mywisdom88说的存储过程我也不会用,我在网上查了一些资料,用如下的方法,师傅们看行不行:
CSQL="INSERT...."+CHR()
CSQL=csql+"UPDATE...."     &&把2个操作集中到一个字符串
SQLSETPROP(gnHandle, 'Transactions', 2)
myreturn=sqlexec(gnHandle,csql)
if myreturn=1
   sqlcommit(gnHandle)    &&事务交付
else
   sqlrollback(gnHandle)  &&事务回滚
endif  
SQLSETPROP(gnHandle, 'Transactions', 1) &&事务改回自动处理


[此贴子已经被作者于2019-8-20 17:21编辑过]

2019-08-20 16:58
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
非常感谢radiofan师傅的解答,程序我还有点看不懂,需要慢慢消化,有几个疑问如下:
一 SQLExec(connhandle,"Begin Transaction") 这一句是不是调用SQL本身的事务代码,调用这个语句,不需要设置SQLSETPROP(gnHandle, 'Transactions', 2)之类的语句吗
二 如果sqlok = SQLExec(connhandle,"delete ……")成功,但是sqlok = SQLExec(connhandle,"update ……")失败了,SQLExec(connhandle,"Rollback Transaction") 是回滚2个操作,还是仅仅回滚第二个操作
三 使用SQL的事务管理是不是比VFP的事务管理优越些。





[此贴子已经被作者于2019-8-22 08:59编辑过]

2019-08-22 08:46
快速回复:关于远程访问数据,如何完善事物管理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018799 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved