datawindow中动态变更dropdowndw值

datawindow中动态变更dropdowndw值

ID:8811991

大小:27.00 KB

页数:5页

时间:2018-04-08

datawindow中动态变更dropdowndw值_第1页
datawindow中动态变更dropdowndw值_第2页
datawindow中动态变更dropdowndw值_第3页
datawindow中动态变更dropdowndw值_第4页
datawindow中动态变更dropdowndw值_第5页
资源描述:

《datawindow中动态变更dropdowndw值》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、在PowerBuilder的应用程序开发过程中,对数据库中数据进行操作的对象是数据窗口对象(DataWindow),利用数据窗口对象,我们可以十分方便地完成对数据库中已经存在的表中数据进行检索、查询、插入、删除和更新。但是,在实际问题中,我们常常遇到数据库中的一些表是用户在程序运行期间动态生成的,若要对这样表中的数据进行操作,就要运用动态数据窗口对象,值得提到的一点是,在动态数据窗口对象生成时,其标题区(HeaderBand)中的文本不能直接显示成汉字,这的确是一点遗憾,不过这个问题可以通过映射的方法得到解决。  一、问题的提出  设有如下两张表:  A表中的记录是用户可以在程序运行

2、期间进行自由增加、修改、删除和更新的,B表中的属性(即:字段)由A表中的记录决定并动态创建,而且,能够方便地对B表中的数据提供汉化的操作界面。当然,将B表创建为下表  也是可以的,但是,在动态生成数据窗口对象时,其标题区(HeaderBand)中的文本不会显示成汉字,而是一些乱码,反而不利于问题的解决。  二、问题的解决  1、动态创建B表的解决  我们要动态创建B表,就要构建动态SQL语句。何谓动态SQL语句?数据库应用程序通常进行确定的工作,因此在编写和编译时,就可以确定完整的SQL语句,但当需要使用PowerBuilder不支持的嵌入SQL语句(如DDL语句),或者在编译时不知

3、道语句的具体格式或参数,则在运行时构成SQL语句,这类语句被称为动态SQL语句。  动态SQL语句的格式:  EXECUTEIMMEDIATESQLstatement[UsingTransationObject];  参数说明:  SQLstatement包含一条有SQL语句的字符串  TransationObject事务对象  2、动态数据窗口对象创建及标题区(HeaderBand)中文本汉化的解决  (1)在程序运行时,我们可以调用Create函数动态生成数据窗口对象。格式如下:  DataWindowControl.Create(Syntax{,Errorbuffer})  参

4、数说明:  DataWindowControl将在其中创建数据窗口对象的数据窗口控件名  Syntax数据窗口对象源代码  Errorbuffer用于保存错误信息的字符串  (2)由于标题区(HeaderBand)中文本框的名称是对应细目区(DetailBand)中相应列的名称加上"_t"构成的,而细目区(DetailBand)中列的名称又是相应表的属性的名称。因此,我们能够使用游标(Cursor)取出A表中的ywm和zwm的值,然后使用映射的方式替换标题区(HeaderBand)中文本框的文本(Text)属性,从而使标题区(HeaderBand)中文本框的文本显示为相应的汉字。  

5、三、一个简单的例子  在PowerBuilder6.5和MSSQLServer6.5的环境下,使用一个简单的例子实现上述的观点,限于篇幅,只列出主要界面及关键程序。  1、"动态创建B表"按钮对应的代码是:  intli_i=1,li_count  stringywm[],zdlx[],ls_temp,ls_sql  //使用游标(Cursor)从数据库的表中获取ywm和zdlx的值并存储于数组ywm[]和zdlx[]中  selectcount(*)into:li_countfroma;  DECLAREa_curCURSORFORSELECTywm,zdlxFROMaorderb

6、yywm;  OPENa_cur;  FETCHa_curINTO:ywm[li_i],:zdlx[li_i];  dowhilesqlca.sqlcode=0  ls_temp=trim(zdlx[li_i])  choosecasels_temp  case"1"  ls_temp="char(10)"  case"2"  ls_temp="numeric(7,2)"  endchoose  zdlx[li_i]=ls_temp  ywm[li_i]=trim(ywm[li_i])  li_i++  FETCHa_curINTO:ywm[li_i],:zdlx[li_i];  l

7、oop  closea_cur;  //创建B表和主键(PrimaryKey)  ls_sql="createtableb"+"("+ywm[1]+""+zdlx[1]+"notnull,"&  +"constraintpk_bprimarykey("+ywm[1]+"))"  executeimmediate:ls_sql;//增加B表的列  forli_i=2toli_count  ls_sql="altertablebadd"+ywm[li_i]+"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。