CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

数据窗体的取值与赋值(急)!

楼主xiaoqiangteng(迷惘于程序王国)2004-09-02 23:14:00 在 PowerBuilder / 基础类 提问

我用grid方式创建了一个数据窗体,然后一次录入了多条数据,请问如何像单条数据那样用setitem(),getitem()对第二,第三条...记录的某个字段赋值,取值? 问题点数:100、回复次数:14Top

1 楼heizhixin(黑纸心)回复于 2004-09-02 23:33:18 得分 10

//我刚学PB不久,也许回答的不对,请不要见笑。  
  //对多条记录赋值取值,应该可以用循环语句。  
  long   i  
  for   i   =   getrow()   to   getrow   +   n    
          setitem(i,"列名",值++)  
  next  
   
  Top

2 楼xc008(天函)回复于 2004-09-03 00:24:55 得分 10

 
  赋值:  
  dw_1.object.列名[i]   =   取   //i为行数  
  取值:  
  值   =   dw_1.object.列名[i]Top

3 楼xuexy1980_xxy1980(勇豹)回复于 2004-09-03 08:08:51 得分 10

Setitem(行,列,值)  
  值   =   GEtItemString(行,列)  
  值   =   GEtItemDecimal(行,列)  
  值   =   GEtItemNumber(行,列)  
  ……  
  具体看一下帮助  
  Top

4 楼sywen(古道西风)回复于 2004-09-03 08:11:56 得分 10

up  
  還有:  
  decimal   dwcontrol.GetItemDecimal   (   long   row,   integer   column   {,   DWBuffer    
            dwbuffer,   boolean   originalvalue   }   )  
  date   dwcontrol.GetItemDate   (   long   row,   string   column   {,   DWBuffer   dwbuffer   ,    
            boolean   originalvalue   }   )  
  numeric   dwcontrol.GetItemNumber   (   long   row,   string   column   {,   DWBuffer    
            dwbuffer,   boolean   originalvalue   }   )  
  string   dwcontrol.GetItemString   (   long   row,   integer   column   {,   DWBuffer    
            dwbuffer,   boolean   originalvalue   }   )  
  time   dwcontrol.GetItemTime   (   long   row,   string   column   {,   DWBuffer   dwbuffer,    
            boolean   originalvalue   }   )  
  賦值把get改成set就行Top

5 楼qianduo(flyinsky)回复于 2004-09-03 08:12:03 得分 10

可以用循环语句。  
  Top

6 楼10975037(猩猩)回复于 2004-09-03 08:30:22 得分 10

dw_2.setitem(1,'daparment','部门:融庭')  
  -------------------------------------------  
  dw_1.getitemstring(1,'column_name')//string   value  
  dw_1.getitemdatetime(1,'column_name')//datetime   value  
  dw_1.getitemnumber(1,'column_name')//number   valueTop

7 楼suzh1133(suzh)回复于 2004-09-03 08:44:05 得分 10

使用循环  
   
  主要是记录下来你插入的行是从那一行开始、及插入次数,  
  这样才能让你在别的事件中定位数据窗口记录来赋值Top

8 楼qinlong_01(龙之吻)回复于 2004-09-03 09:33:20 得分 10

在数据窗口中取值、赋值,应该是件简单的事情。问题是你要在数据窗口中插入多条记录,数据源从哪里来从那里去?如果仅仅是取值插入则采用:  
  FOR   i   =   1   TO   row         //row   为要插入的总行数  
      l   =   dw_1.insertrow()     //l记录新插入的行号  
      dw_1.object.列名[l]   =   已取得的值  
      ……  
  NEXTTop

9 楼jp2k(深蓝)回复于 2004-09-03 09:43:23 得分 10

读取和设置的方法常用的有:  
  ll_string   =   dw_1.getitemstring(ll_row,'column_name')  
  dw_1.setitem(ll_row,'column_name','要设置的字符')  
   
  ldt_datetime   =   dw_1.getitemdatetime(ll_row,'column_name')  
  dw_1.setitem(ll_row,'column_name','要设置的日期时间')  
   
  ld_number   =   dw_1.getitemnumber(ll_row,'column_name')  
  dw_1.setitem(ll_row,'column_name',要设置的数字)  
   
  使用循环方法。  
  注意数据窗口Rows   -->   Update   properties属性要设置,否则无法保存。Top

10 楼sxyc24(E龙)回复于 2004-09-03 10:07:58 得分 10

Setitem(行,列,值)  
  值   =   GEtItemString(行,列)  
  值   =   GEtItemDecimal(行,列)  
  值   =   GEtItemNumber(行,列)  
  ……  
  具体看一下帮助  
  Top

11 楼xiaoqiangteng(迷惘于程序王国)回复于 2004-09-03 10:35:54 得分 0

虽然大家回答的不是我想要的答案,也许是本人没有说清楚吧。但是仍然要谢谢大家的帮助。今天问题自己已经解决了。哈~~  
  给分喽!!Top

12 楼peixun(秋雨霏霏)回复于 2004-09-03 10:37:01 得分 0

都说了,我就免了Top

13 楼cwel()回复于 2004-09-03 10:44:01 得分 0

就是这样了。  
   
  dw_name.getitemstring(行号,列名)   //取字符型列  
  dw_name.setitem(行号,列名,值)Top

14 楼amekoxiao(无情)回复于 2004-09-03 10:52:27 得分 0

看看下面地代码,是个通用的,很多地方都会有用的,这是添,要是取把setitem,改为,getitem+类型即可  
      ll_colnum   =long(adw_dwo.Object.DataWindow.Column.Count) //取得字段总数  
      FOR   ll_num   =   1   TO   ll_colnum  
        ls_obj   =   adw_dwo.Describe("#"+String(ll_num)+".name") //字段名称的实际存储值  
        ls_value   =   sqlca.getvalue(as_instr,ls_obj)  
  ls_coltype=adw_dwo.Describe(ls_obj+'.coltype')   //字段类型  
  //根据外部数据窗口字段类型填充数据  
          if   pos(upper(ls_coltype),"DATETIME")   >0     then  
          adw_dwo.setitem(ll_rownum,ls_obj,datetime(ls_value))  
  elseif   pos(upper(ls_coltype),"DATE")   >0     then  
          adw_dwo.setitem(ll_rownum,ls_obj,date(ls_value))  
          elseif   pos(upper(ls_coltype),"DECIMAL")   >0   then  
              adw_dwo.setitem(ll_rownum,ls_obj,dec(ls_value))  
          elseif   pos(upper(ls_coltype),"LONG")   >0   then  
            adw_dwo.setitem(ll_rownum,ls_obj,long(ls_value))  
          elseif   pos(upper(ls_coltype),"NUMBER")   >0   then  
          adw_dwo.setitem(ll_rownum,ls_obj,Integer(ls_value))  
          else  
          adw_dwo.setitem(ll_rownum,ls_obj,ls_value)  
          end   if  
    NEXTTop

相关问题

  • 怎样能够使窗体里面的图片赋值到数据报表中,高手赶快救救我!!!!!!!!!!!!
  • XMLHTTP制作联动菜单,我从数据库中取值怎么赋值给它
  • 控件循环赋值或取值
  • 模态窗体能自动赋值给父窗体的textbox.text吗?
  • 数据赋值问题?
  • 如何给IDD_ABOUTBOX窗体里的checkbox赋值
  • 请问如何给窗体内所有TEDIT赋值?
  • 数据窗体问题???
  • ComboBox如何赋值和取值,很简单
  • 关于一对多的取值和赋值问题

关键词

  • 数据
  • 字段
  • 循环
  • 赋值
  • setitem
  • 取值
  • dwbuffer
  • dwo
  • adw
  • coltype

得分解答快速导航

  • 帖主:xiaoqiangteng
  • heizhixin
  • xc008
  • xuexy1980_xxy1980
  • sywen
  • qianduo
  • 10975037
  • suzh1133
  • qinlong_01
  • jp2k
  • sxyc24

相关链接

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

广告也精彩

反馈

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