数据窗口添加的问题!!!!(急急急)在线等待!

bitininjai 2003-05-23 10:54:05
我有一个free模式的数据窗口。
有两个按钮:添加,保存
添加按钮代码:
long gc_ls

tab_1.tabpage_2.dw_gc_in_pubinfo.retrieve("")
tab_1.tabpage_2.dw_gc_in_pubinfo.settransobject(sqlca)
tab_1.tabpage_2.dw_gc_in_pubinfo.insertrow(0)

gc_ls = tab_1.tabpage_2.dw_gc_in_pubinfo.getrow()
tab_1.tabpage_2.dw_gc_in_pubinfo.scrolltorow(gc_ls)
tab_1.tabpage_2.dw_gc_in_pubinfo.setrow(gc_ls)
tab_1.tabpage_2.dw_gc_in_pubinfo.setfocus()

保存按钮代码:
tab_1.tabpage_2.dw_gc_in_pubinfo.settransobject(sqlca)
tab_1.tabpage_2.dw_gc_in_pubinfo.update()
if sqlca.sqlcode<>0 then
rollback;
messagebox("错误","添加失败!")
return
end if
commit;
messagebox("提示","添加成功")

问题是:第一次点添加按钮,添加完成后,保存会出现添加失败。
但是第二次点添加按钮完成后保存就会正常!
实在是不知道有什么问题,请高人指点!!!(急急急)



...全文
58 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
safenxiao 2003-05-23
  • 打赏
  • 举报
回复
具体代码如下,可以使以下,应该没什么问题:(祝你好运!)
datawindow ldw_dwname

ldw_name = tab_1.tabpage_2.dw_gc_in_pubinfo

ldw_dwname.settransobject(sqlca)
ldw_dwname.retrieve("")
ldw_dwname.scrolltorow(ldw_dwname.insertrow(0))
ldw_dwname.setfocus()
ldw_dwname.setcolumn(1)

保存按钮代码:
ldw_dwname.accepttext()
ldw_dwname.update()
if sqlca.sqlcode<>0 then
rollback;
messagebox("错误","添加失败!")
return
else
commit;
messagebox("提示","添加成功")
end if
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
风之子:先谢谢了!
但是:
1.open事件的时候那些已经写过了。而且,open的时候,我就希望它是空白的数据窗口,放在那里。
所以我已经写了:tab_1.tabpage_2.dw_gc_in_pubinfo.settransobject(sqlca)
tab_1.tabpage_2.dw_gc_in_pubinfo.retrieve("")
tab_1.tabpage_2.dw_gc_in_pubinfo.insertrow(0)
2.现在的问题就是:sqlca.sqlcode的值,添加后应该是什么?
而且第一次和第二次添加有什么不一样么?
zyhtz 2003-05-23
  • 打赏
  • 举报
回复
在tab_1.tabpage_2的constructor事件,也就是构造事件里写
dw_gc_in_pubinfo.settransobject(sqlca)
dw_gc_in_pubinfo.retrieve()
不要每次都设置窗口的事务对象,可能会出现错误
添加按钮代码:
long gc_ls
dw_gc_in_pubinfo.reset()
gc_ls=dw_gc_in_pubinfo.insertrow(0)
dw_gc_in_pubinfo.setfocus()

保存按钮代码:
dw_gc_in_pubinfo.update()
if sqlca.sqlcode=0 then
commit using sqlca;
messagebox("提示","添加成功")
else
rollback using sqlca
messagebox("错误","添加失败!")
end if
fengzeng 2003-05-23
  • 打赏
  • 举报
回复
1、tab_1.tabpage_2.dw_gc_in_pubinfo.settransobject(sqlca)应放在tab_1.tabpage_2.dw_gc_in_pubinfo.retrieve("")之前或者放在窗口的OPEN事件中;
2、保存时不需要tab_1.tabpage_2.dw_gc_in_pubinfo.settransobject(sqlca),在保存之前要tab_1.tabpage_2.dw_gc_in_pubinfo.accepttext(),把错误信息提出来看看!
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
我经过试验,将:
if sqlca.sqlcode<>0 then
rollback;
messagebox("错误","添加失败!")
return
end if
注释掉!
基本上就没有问题了!
是不是添加完成sqlca.sqlcode就是等于-1.
但是后来再添加的时候,sqlca.sqlcode就等于0了!
pei322 2003-05-23
  • 打赏
  • 举报
回复
用UpDate()的返回值来控制效果可能会好一些
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
accepttext()返回的是:select returned more than one row
是不是我的添加行有问题。
devil_heart 2003-05-23
  • 打赏
  • 举报
回复
if tab_1.tabpage_2.dw_gc_in_pubinfo.update()<>1 then
rollback;
messagebox("错误","添加失败!")
return
end if
commit;
messagebox("提示","添加成功")
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
homeness(想家):有可能是你说的问题。
我的数据窗口有一个值是要直接添加的,就是在程序里添加的,在界面上是不现实出来的,是调用其它数据窗口的一个内容。
代码如下:(我将这段代码写在添加的按钮里了)
long gc_no,gc_ls
string name
gc_no = dw_gc_name.getrow()
name = dw_gc_name.getitemstring(gc_no,1)
gc_ls = tab_1.tabpage_2.dw_gc_in_pubinfo.getrow()
tab_1.tabpage_2.dw_gc_in_pubinfo.setitem(gc_ls,"gc_name",name)
zyhtz 2003-05-23
  • 打赏
  • 举报
回复
保存之前先accepttext()
如果错误
把错误信息提取出来看一下
messagebox(string(sqlca.sqlcode),sqlca.sqlerrtext)
看一下这个sqlca.sqlerrtext
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
朋友们,我基本上也是那样写的。

现在的问题很明确了:用下面的代码,就会出现问题。

保存按钮代码:
dw_gc_in_pubinfo.update()
if sqlca.sqlcode=0 then
commit using sqlca;
messagebox("提示","添加成功")
else
rollback using sqlca
messagebox("错误","添加失败!")
end if

但是代码本身没有错误,现在就是sqlca.sqlcode的值的问题了。

homeness 2003-05-23
  • 打赏
  • 举报
回复
那是你的代码有问题
sqlca.sqlcode并不会因为你的出入而改变他的值
是因为你的插入有错误
才导致sqlca。sqlcode的值改变的
看一下你插入列的类型有没正确
zyhtz 2003-05-23
  • 打赏
  • 举报
回复
tab_1.tabpage_2.dw_gc_in_pubinfo.update()
update()成功时返回值为0
你判断这个就可以了,然后看是否提交或回滚事务
dw_gc_in_pubinfo.update()
if sqlca.sqlcode=0 then
commit using sqlca;
messagebox("提示","添加成功")
else
rollback using sqlca
messagebox("错误","添加失败!")
end if
这样没错的
你的问题可能是没有
tab_1.tabpage_2.dw_gc_in_pubinfo.accepttext()
应该在保存之前先accepttext()
bitininjai 2003-05-23
  • 打赏
  • 举报
回复
zyhtz(海阔天空):也先谢谢了!
但是,我这里的问题是:第一次添加的sqlca.sqlcode的值是-1,而且可以添加到数据库中。

但是以后再按添加按钮后的sqlca.sqlcode的返回值就是0了。

所以,刚才的那个判断都是不可以的。

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧