数据窗体的取值与赋值(急)!
我用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




