datawindow与主键冲突的问题?

anjiuxuan 2007-05-18 03:27:48
我是新手,在数据窗口中,保存数据时,遇到没有输入和当输入与主键冲突的时候,想报错,请问老手们怎么写?
...全文
413 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_d_s 2007-06-08
  • 打赏
  • 举报
回复
插入数据主键由程序生成,保存时候主键不许修改,这样可以保证主键必有值且不会重复
ninetowns2000 2007-06-08
  • 打赏
  • 举报
回复
to 楼上:
// 如果是数据空中原来的纪录被修改 则需要判断主键是否发生变化
那么怎么样判断主键是否发生变化?
关键点,请说明一下.非常感谢.
  • 打赏
  • 举报
回复
sqlcode的返回值可以判断,参数分别是-1,-2,-3,-4
如写入失败 sqlcode=-4
PHDYCN 2007-05-21
  • 打赏
  • 举报
回复
ll_row = dw_3.modifiedcount( )
ll_mod = 0
For ll_num = 1 to ll_row
ll_mod = dw_3.getnextmodified( ll_mod, primary! )
If ll_mod = 0 then
exit
Else
ls_var = dw_3.getitemstring( ll_mod, '主键' )
If isnull( ls_var ) or trim( ls_var ) = '' then
messagebox( '提示:','请输入主键' )
dw_3.scrolltorow( ll_mod )
dw_3.setcolumn( 1 )
dw_3.setfocus( )
return
End If

//已经填写主键:则可以用SQL语句来判断主键是否冲突
//需要区分两种情况:当前行是新增加的行 select count(主键) into :变 量
// from 表 where 主键=:ls_var
// 如果>0 则说明主键已有可以报错 return
// 如果是数据空中原来的纪录被修改 则需要判断主键是否发生变化
// 没有变化就不用判断, 如果有变化则用sql语句判断一下是否主键冲突
//
End If
Next

If dw_3.update() <> 1 Then
rollback;
messagebox( '提示:','保存失败!' )
Else
commit;
messagebox( '提示:','保存成功!' )
End If
anjiuxuan 2007-05-18
  • 打赏
  • 举报
回复
能不能详细的给出代码,给我参考参考???
houdongfeng 2007-05-18
  • 打赏
  • 举报
回复
在Update之前查找该主键在数据库中是否已经存在
yuanqi007 2007-05-18
  • 打赏
  • 举报
回复
保存之前,对数据进行校验,判断主键是否已存在、必填写字段、数据的取值范围等。

另外,也可以在数据窗口的DBERROR事件里,判断数据库操作错误的返回代码,进而判断是什么错误。

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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