CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

如何将pb的错误换成自定义的错误!???

楼主yzqb(阿波)2002-06-07 21:00:14 在 PowerBuilder / 基础类 提问

数据窗口保存时,如果主键重复,将会出现一大堆错误代码,以及英文提示。  
  如何在程序中避免这些提示从而换成自己的提示信息。  
        数据窗口grid格式,当保存时,如果有错误,如何知道时主键重复。  
  即   if   XXXXXX   then  
        messagebox("提示信息","代码重复")  
        return  
        end   if  
  问题点数:20、回复次数:5Top

1 楼qlzgdzfl(紫风玲)回复于 2002-06-07 21:34:46 得分 15

Tips:消除数据窗口的英文提示         [Close]        
      //在数据窗口的dberror事件中加入下列代码,可以根据自己需要来扩展出错检测    
  //文章中的'primary   key   for'等会根据pb的版本而不同。  
  if   pos(sqlerrtext,'primary   key   for')<>0   then    
          messagebox("","记录重复了,请重新输入")    
          this.setfocus()    
          this.scrolltorow(row)    
          return   1    
  elseif   pos(sqlerrtext,'not   running')<>0   then    
          messagebox("","数据库连接不上,请与管理员联系")    
          return   1    
  elseif   pos(sqlerrtext,"Integrity   constraint   violation:   Column")<>0   then    
          string   ziduan    
          ziduan=mid(sqlerrtext,80,pos(sqlerrtext,"in   table")   -   82)  
          messagebox("","["+this.describe(ziduan+"_t.text")+"]不能为空")    
          this.setfocus()    
          this.scrolltorow(row)    
          this.setcolumn(ziduan)    
          return   1    
  end   if      
  //pb6.5中的  
   
  integer   ls_len,ls_len1,ls_len2,ls_len3,ls_len4  
  if   pos(sqlerrtext,'primary   key   for')<>0   then    
          messagebox("","记录重复了,请重新输入")    
          this.setfocus()    
          this.scrolltorow(row)    
          return   1    
  elseif   pos(sqlerrtext,'not   running')<>0   then    
          messagebox("","数据库连接不上,请与管理员联系")    
          return   1    
  elseif   pos(sqlerrtext,"Integrity   constraint   violation:   Column")<>0   then  
    ls_len   =   pos(sqlerrtext,"Integrity   constraint   violation:   Column")  
    ls_len1   =   len("Integrity   constraint   violation:   Column")  
    ls_len2   =   ls_len   +   ls_len1   +   2  
    ls_len3   =   pos(sqlerrtext,"in   table")  
    ls_len4   =   ls_len3   -   2   -   ls_len2  
          string   ziduan    
          ziduan=mid(sqlerrtext,ls_len2,ls_len4)  
          messagebox("系统提示","[   "+this.describe(ziduan+"_t.text")+"   ]   不能为空!",stopsign!)  
          this.setfocus()    
          this.scrolltorow(row)    
          this.setcolumn(ziduan)    
          return   1  
  else  
  messagebox("系统提示","数据发生错误!,是否有一项未输入值,请检查!",stopsign!)  
  return   1  
  end   if  
   
  asa7.0中的  
  其实简单的,只是一点不同看看sqlerrtext就知道连  
   
  Top

2 楼yuanbo824(小波在线)回复于 2002-06-07 22:15:25 得分 5

我把error.number的值换成中文列出来,供大家参考:  
   
  1:   被零除  
  2:引用空对象  
  3:数组越界  
  4:枚举值超出函数范围  
  5:函数中遇到负值  
  6:指定的数据窗口行/列无效  
  7:联接引用时,出现不可解决的外部引用  
  8:引用带有空下标的数据  
  9:DLL函数未在当前程序中  
  10:DLL函数不支持的参数类型  
  11:对象文件已过期,必须转化为当前版本  
  12:数据窗口列类型与GETITEM类型不匹配  
  13:不可知的属性引用  
  14:为外部函数打开错误DLL库  
  15:错误调用外部函数  
  16:超出最大字符串长度  
  17:数据窗口控件中引用的数据窗口对象不存在  
  18:函数未返回值  
  19:不能将任意变量中NAME转化为NAME  
  20:没有成功地准备好数据库命令  
  21:运行时,不正确地引用函数  
  22:不可知的对象类型  
  23:不能将NAME类型的对象赋值为NAME类型的对象  
  24:函数调用与其定义不匹配  
  25:DOUBLE或REAL表达式溢出  
  26:不支持对NAME字段的赋值  
  27:非整数指数不能为负  
  28:VBX错误:NAME  
  29:ANY变量需要非整组值  
   
  (不好意思,还没写完,有事,有空再补,请先别结贴)Top

3 楼bzlj(bzlj)回复于 2002-06-07 23:10:58 得分 0

继续!  
  先收藏!  
    qlzgdzfl(紫风玲)   那样太麻烦了!  
  Top

4 楼mxlmwl(飞星)回复于 2002-06-08 00:23:04 得分 0

这个可用itemchanged和数据窗口的losefocus()就可以实现啦,先在itemchanged中写入  
  if   this.find(data,1,this.rowcount())>0   then  
  messagebox("","")  
  end   if  
  然后用return   1还是return   2,我忘记了,你自己试试看吧  
   
  如果只想区别主键,可以将data用getitemstring或getitemnumber等找出数据,然后用find().  
   
  然后可以将dberror,itemerror等事件都可以设为return   1,这样就可以避免讨厌的自带提示了。  
   
  然后在losefocus()中写入this.accepttext(),这样就可以避免数据窗口失去焦点而无法触发itemchanged事件的问题了。Top

相关问题

  • 如何自定义错误说明
  • 一条错误信息(自定义类)
  • weblogic如何自定义错误页
  • webbrowser错误页面自定义问题
  • 关于自定义标签的错误!!!
  • 如何自定义500.100错误页?
  • 控制自定义错误显示和定义自定义的错误页:customErrors
  • 关于PB自定义数据源,连接ACCESS 的错误,高手帮忙看下
  • PB 自定义纸张设置
  • PB 中自定义事件问题!

关键词

  • 函数
  • 数据
  • pb
  • 代码
  • sqlerrtext
  • ziduan
  • ls
  • scrolltorow
  • 错误
  • 换成

得分解答快速导航

  • 帖主:yzqb
  • qlzgdzfl
  • yuanbo824

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo