Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > PowerBuilder编程俱乐部(一)
【标  题】:PowerBuilder编程俱乐部(一)
【关键字】:编程,ld,Build,Builder,Power,PowerBuilder,PowerBuilder
【来  源】:网络

PowerBuilder编程俱乐部(一)

Your Ad Here 大家好!PowerBuilder编程俱乐部今天正式与大家见面了,欢迎各位PB爱好者参与进来!为了方便与大家的交流,俱乐部特开放两个Email信箱:kjx@263.net和pb7@990.net,大家如果有PB方面的问题,可以发Email到这两个信箱。当然,更欢迎各位到我的主页http://kjx.126.com或http://pb70.yeah.net的BBS讨论区提交问题或解答问题,以便大家都能从中学到知识。互相学习、共同进步是PB编程俱乐部的宗旨,热切希望爱好PB编程的读者加入到PB编程俱乐部来!
   一、问:一个MIS系统采用C/S的开发模式,前台开发工具用PB6.5,后台数据库为Oracle7.3。我通过OBOC却连不上数据库,请问应该如何配置?
   答:PB提供了与当前流行的大型数据库如Oracle、Informix、Sybase等的专用接口,连接时无需通过ODBC。配置步骤具体如下:
   1. 首先要通过SQL*Net配置数据库别名。
   启动SQL*Net Easy Configuration后,选择“添加数据库别名” ( Add Database Alias),输入数据库别名, 如hello。选择协议TCP/IP,输入TCP/IP主机名(TCP/IP Host Name),可为主机名或IP地址输入数据库名(Database Instance)如ora7。单击“确定”按钮,生成数据库别名(hello)后,按“取消”退出。连接数据库,测试SQL*Net是否连通。运行SQL*PLUS,用自己的用户名,如kukoc进入,在用户名处输入kukoc/kukoc@hello 。若进入远程数据库,则SQL*Net 配置成功。
   2.然后,在PB6.5中配置 DB Profile。
   选择073 Oracle7.3,按Button New,输入Profile Name,如hello。
   输入Server:@hello(此处一定要为@+开始配置的数据库别名)
   输入Login ID:kukoc
   输入Password:kukoc
   单击确定按钮结束。
   我们也可以通过配置文件(.ini)实现数据库连接,如hello.ini文件中数据库配置如下:
   [Database]
   DBMS=O73 ORACLE 7.3
   Database=
   UserId=
   DatabasePassword=
   LogPassword=kukoc
   ServerName=@hello
   LogId=kukoc
   Lock=
   DbParm=
   Prompt=0

   二、问:我在编写数据窗口录入程序的时候,若用户录入违反了约束(如关键字重复、非空项没输入等),程序老报一大堆英文出错信息,用户也看不明白。我怎样才能屏蔽它,并显示中文的错误信息?
   答:可以自己编写一个错误信息函数,如f_dwerror_message(),参数为错误信息代码(Long型),返回值为1。函数中根据传入的错误代码给出相应的中文错误信息。在数据窗口的dberror事件中调用它:
   return f_dwerror_message (sqldbcode)
   而且,我们还可以将此数据窗口作成用户对象,要用到的地方继承即可。

   三、问:在PB中如何打开一个文件(如.txt,.doc),就像在资源管理器中双击打开文件一样?
   答:可以通过API函数来实现。
   在应用程序的Global External Functions中定义:
   Function long ShellExecuteA (ulong hwnd, string lpOperation, string lpFile, & string
lpParameters, string lpDirectory, long nShowCmd) library “shell32.dll”   调用如下:
   String ls_null
   SetNull (ls_null)
   ShellExecuteA(Handle(Parent), ls_null, “c:\doc\hello.txt”, ls_null, ls_null, 1)
   四、问:PB中数据窗口输入栏目(域)间的切换通过按键盘最左边的Tab 键来实现,既不方便又影响录入速度。如何能用Enter键替代Tab 键切换栏目,实现焦点的转移?
   答:由于按Enter键是Windows直接支持的消息,故我们可以使用用户事件来解决此问题。 在用户事件中,PowerBuilder提供的一条pbm_事件对应Windows的一条或几条消息。我们在数据窗的用户事件中选择pbm_dwnProcessEnter并命名为ue_Enterkeydown。当我们按下Enter键时,将触发此事件。
   提供两种方法(推荐用第二种):
   1.利用数据窗口的SetColumn函数。
   在所定义的ue_Enterkeydown事件下写代码:
   long ll_column_count
   long ll_column
   ll_column_count =long(this.Describe(“DataWindow.Column.Count”))
   ll_column = this.GetColumn()
   if ll_column = ll_column_count then
   return
   else
   this.SetColumn(ll_column + 1)
   end if
   用上面脚本,须注意几点:
   (1) 按Enter键,焦点的切换是按所选列的顺序,而不是按设置的Taborder的顺序。
   (2) 若某列的visible属性为false 或 TabOrder = 0, 则以上方法不起作用。
   若不合以上要求,即所选列的顺序与要录入域顺序不一致,或某些列的visible属性为false或 其TabOrder = 0,此时不能用上述代码,但也可用类似方法实现,只是稍繁琐一点,举例如下:
   long ll_column
   string ls_column_name
   ll_column = this.getcolumn()
   ls_column_name = this.Describe(“#”+string(ll_column)+“.Name”)
   choose case ls_column_name //列名
   case ‘no'
   this.SetColumn(‘name')
   case ‘name'
   this.SetColumn(‘age')   case ‘age'
   …
   end choose
   2.把消息传递给Tab键,同时忽略Enter键的处理,这种方法最为方便简洁。在ue_Enterkeydown事件中
   编写脚本如下:
   Send(Handle(this),256,9,Long(0,0))
   Return 1

   五、问:Datawindow中要匹配的条件是变化的,如输入一个名字(名字放在变量ls_name中),用dw_name.setfilter(“name = ” + ls_name )不起作用。如何用setfilter将这条记录找出来?
   答:因ls_name 是string型的,filter语句应该这样写:
   dw_name.SetFilter(“name = ‘” + ls_name + “'”)
   dw_name.Filter( )
   当ls_name = “张三”时,脚本实际为:
   dw_name.SetFilter(“name = ‘张三’”)
   dw_name.Filter( )

   六、问:怎样得到一个应用程序如Outlook的路径?
   答:可用RegistryGet()函数从系统注册表中获得。具体用法如下:
   li_return = RegistryGet (“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows &
   \CurrentVersion\App Paths\MSIMN.EXE”,“Path" , ls_outlook_path )
   执行此脚本后,Outlook的路径将保存在string型变量ls_outlook_path中。
怎样将PB应用的全部源代码打印出来:【上一篇】
PB中如何实现对EXCEL的操作?:【下一篇】
【相关文章】
  • 优化你的PowerBuilder程序
  • 在POWER BUILDER中使用WINSOCK控件
  • PowerBuilder编程技巧四则
  • PowerBuilder 创建数据窗口对象
  • 从Web站点读取Flash动画演播的PB6.5编程
  • 在PowerBulider中读写IC卡
  • Win32 API 与PB编程
  • Powerbuilder中怎样实现用代码配置ODBC
  • PowerBuilder修改数据库表结构的技巧
  • 在PowerBuilder中操作BLOB数据的技巧
  • 【随机文章】
  • topsec fw-ares 升级手记
  • 从mksysb中恢复个别文件的方法
  • James安装使用简易指南
  • GSM切换掉话的分析及解决办法
  • 二叉树的操作
  • 关于异步信号安全
  • date.inc.php3中两个函数的例程
  • 让人伤心的公司,跳槽(辞职)的n个理由
  • 我就给一个PHP逆波兰表达式的算法吧---工资计算专用
  • 以寄生方式安装lfs与mount的一些不常用选项
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.