当前位置: 代码迷 >> PB >> pb的几个基础而且至今还迷糊的有关问题
  详细解决方案

pb的几个基础而且至今还迷糊的有关问题

热度:35   发布时间:2016-04-29 10:05:56.0
pb的几个基础而且至今还迷糊的问题
一。事务
1)数据窗口在保存和SQL语句一起执行做为一个事务
功能:学生表中添加学生的姓名,同时向班级表也插入一条记录,两个数据库操作做为一个事务
sqlca.autocommit = false
dw_1.object.name[i] = ‘王三’
String ls_sql
ls_sql = "insert into student_no_one(name) values('" + "王三" +"'"
if dw_1.update() = 1 then
  Execute Immediate :ls_sql Using sqlca;
  if sqlca.sqlcode() <> - 1 then
  commit;
  end if
else
  rollback;
end if
结果是如果sqlca.sqlcode() <> - 1 ,dw_1.update同样成功,数据已经写到了数据库
二。Filter缓冲区的问题
功能:在一个数据窗口中利用多选选取数据,然后把这些数据移到另一个数据窗口中,进行存储
s_xz是多选框,选是为1,不选中是0
dw_1.settrans(sqlca)
dw_1.retrieve()
ls_syntax = dw_1.Object.datawindow.Syntax
dw_temp.create(ls_syntax)
dw_temp.settrans(sqlca)
dw_temp.reset()
dw_1.setfilter("s_xz = 0")
dw_1.filter()
dw_1.rowsmove(1, 1.FilteredCount(), Filter!, dw_temp, 1, primary!)
错误结果就是有的时候dw_temp内数据是选中的,有的时候dw_1中没有选中的也进入了dw_temp中。这把我晕的。
这个帖子88分,祝大家新年发发


------解决方案--------------------
sqlca.autocommit = false 
dw_1.object.name[i] = ‘王三’ 
String ls_sql 
ls_sql = "insert into student_no_one(name) values('" + "王三" +"'" 
if dw_1.update() = 1 then 
Execute Immediate :ls_sql Using sqlca; 
if sqlca.sqlcode() =0 then 
commit; 
else 
rollback;
end if 
else 
rollback; 
end if 

------解决方案--------------------
问题一:
sqlca.autocommit = false 
dw_1.object.name[i] = ‘王三’ 
String ls_sql 
ls_sql = "insert into student_no_one(name) values('" + "王三" +"'" 
if dw_1.update() = 1 then 
Execute Immediate :ls_sql Using sqlca; 
if sqlca.sqlcode() <> - 1 then 
commit; 
else
rollback ; //多加这一句就ok了
end if 
else 
rollback; 
end if 
  相关解决方案