单机也会出DW中的dberror事件sqldbcode为-3的错误

noviceCJ 2009-12-09 09:07:08
为什么单机也会出DW中的dberror事件sqldbcode为-3的错误, 数据库是MS-SQL2000, PB的版本是11, 请教如何解决
...全文
387 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwenlang 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ouchxp 的回复:]
膜拜jf帝
[/Quote]jf
用户 昵称 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ouchxp 的回复:]
膜拜jf帝
[/Quote]
ouchxp 2010-02-02
  • 打赏
  • 举报
回复
膜拜jf帝
pb8 2009-12-17
  • 打赏
  • 举报
回复
表的字段有default值,比如c_name没有输入值,但定义里面为c_name varchar(20) defaut '未指定'之类的,这样点了一次保存按钮之后再修改保存就会提示楼主的错误,因为数据窗口下次构建update的时候还是会认为update xx set aa=... where c_name is null and ...
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
谢谢各位的帮助, 问题最终解决了.
原来后台的表上有个update trigger, 修改此trigger后就ok了.
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 pb8 的回复:]
呵呵,还没解决哦,
你确定一下保存前数据窗口里面的rowcount,
另外,试着在preview里面弹一下看看,看有没有其他的update之类的sql,
如果是sqlserver的话再打开它的查询跟踪器跟一下

[/Quote]
rowcount = 1, 没有其他的update, 在sqlserver事件探查器里看到的也是同样的一句update sql
好奇怪
pb8 2009-12-17
  • 打赏
  • 举报
回复
呵呵,还没解决哦,
你确定一下保存前数据窗口里面的rowcount,
另外,试着在preview里面弹一下看看,看有没有其他的update之类的sql,
如果是sqlserver的话再打开它的查询跟踪器跟一下
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 pb8 的回复:]
在数据窗口的sqlpreview事件里面弹出一下sqlsyntax,看看得到的update的sql是什么,
记得在连接数据库的时候加上SQLCA.DBPARM="DISABLEBIND=1"
否则看到的sql语句赋值部分会是?号
把得到语句放到查询分析器里面自己分析一下就出来了

[/Quote]
在dberror事件里可以直接看到sqlsyntax的
sql语句是update table set aa='abc' where key='123'
sql生成的没有问题, 直接在SQL server里执行可以, 就是在DW中的时候报错
pb8 2009-12-17
  • 打赏
  • 举报
回复
在数据窗口的sqlpreview事件里面弹出一下sqlsyntax,看看得到的update的sql是什么,
记得在连接数据库的时候加上SQLCA.DBPARM="DISABLEBIND=1"
否则看到的sql语句赋值部分会是?号
把得到语句放到查询分析器里面自己分析一下就出来了
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 pb8 的回复:]
表的字段有default值,比如c_name没有输入值,但定义里面为c_name varchar(20) defaut '未指定'之类的,这样点了一次保存按钮之后再修改保存就会提示楼主的错误,因为数据窗口下次构建update的时候还是会认为update xx set aa=... where c_name is null and ...
[/Quote]
DW的update属性中选择的是key columns, dw.update()时生成的sql语句是update table set aa=...where key=...
所以, 应该也不是默认值的问题
noviceCJ 2009-12-14
  • 打赏
  • 举报
回复
问题确实非常奇怪
lian_yi 2009-12-12
  • 打赏
  • 举报
回复
表里有自增字段
noviceCJ 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lian_yi 的回复:]
表里有自增字段
[/Quote]
也不是, 表是一个其普通的表
jlwei888 2009-12-11
  • 打赏
  • 举报
回复
http://hi.baidu.com/smilysoft/blog/item/6270832d163dda32349bf72c.html
noviceCJ 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wag_enu 的回复:]
次次如此?
先只录入一条数据试试吧.
[/Quote]
是个freeform的DW, 每次只操作一笔数据
wag_enu 2009-12-11
  • 打赏
  • 举报
回复
次次如此?
先只录入一条数据试试吧.
noviceCJ 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xys_777 的回复:]
如果有数据库的默认值设置时,经常在多次保存而没有重新retrieve时会出
[/Quote]
数据库里没有设默认值, 保存也只是一次性的(retrieve-->modify-->update), 不存在多次重复保存的情况
noviceCJ 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jlwei888 的回复:]
http://hi.baidu.com/smilysoft/blog/item/6270832d163dda32349bf72c.html
[/Quote]
谢谢你帮忙搜索的文章, 不过我并没有犯文章中列举的几种错误,
1. 只有sqlca一个事务
2. 只运行一个PB
3. 没有setitemstatus(), dw.update()也即是dw.update(true, true)
4. 没有修改original缓冲区
但是dw.update()时莫名其妙的出sqlcode = -3的错误
noviceCJ 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 swallowluo 的回复:]
是不是在保存之前,有其他地方把数据修改了?
[/Quote]
只用了一个DW来处理, 应该不存在"保存之前,有其他地方把数据修改了"的情况
永生天地 2009-12-10
  • 打赏
  • 举报
回复
如果有数据库的默认值设置时,经常在多次保存而没有重新retrieve时会出
加载更多回复(3)

611

社区成员

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

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