当前位置: 代码迷 >> PB >> DataWindow column type does match GetItem type?解决方案
  详细解决方案

DataWindow column type does match GetItem type?解决方案

热度:162   发布时间:2016-04-29 07:07:18.0
DataWindow column type does match GetItem type?????
做了一个窗口 里面包含添加数据控件和刷新控件,其中刷新控件的clicked代码如下 (cb_1是“添加”控件,cb_4是刷新控件)
cb_1.enabled=true

connect using sqlca;
dw_wxjxx.reset()
//dw_wxjxx.settransobject(sqlca)
dw_wxjxx.retrieve()
dw_wxjxx.setfilter("")
dw_wxjxx.filter()
dw_wxjxx.scrolltorow(dw_wxjxx.rowcount())
dw_wxjxx.selectrow(0,false)
dw_wxjxx.selectrow(dw_wxjxx.rowcount(),true)
dw_wxjtjxx.retrieve(dw_wxjxx.getitemnumber(dw_wxjxx.rowcount(),"wxj_id"))


在运行的时候弹出上面标题的文字 DataWindow column type does match GetItem type at line 12 in clicked event of object cb_4 of w_main

错误在哪里啊 各位帮帮忙 

------解决方案--------------------
数据类型不匹配,
dw_wxjxx.getitemnumber(dw_wxjxx.rowcount(),"wxj_id"))
有问题,看wxj_id是什么型的,如果是char,用getitemstring(dw_wxjxx.rowcount(),"wxj_id"))

------解决方案--------------------
dw_wxjtjxx.retrieve(dw_wxjxx.getitemnumber(dw_wxjxx.rowcount(),"wxj_id"))

改为

dw_wxjtjxx.retrieve(dw_wxjxx.getitemstring(dw_wxjxx.rowcount(),"wxj_id"))

如果不行,试试

dw_wxjtjxx.retrieve(dec(dw_wxjxx.getitemstring(dw_wxjxx.rowcount(),"wxj_id")))


------解决方案--------------------
retrieve之前,先settransatian(sqlca)retrieve之前,先settransatian(sqlca)
------解决方案--------------------
Database transaction information not available.Call SetTrans or SetTransObject function.
Application terminated.Invalid DataWindow row/column specified at line 12 in clicked event.

答:可能是列名不对,检查一下你的wxj_id在数据窗口中是否存在,并且数据窗口里必须有数据,即rowcount()大于0

还有你需要调用settransobject(sqlca)来设置事务对象
------解决方案--------------------
dw_wxjtjxx.retrieve(dw_wxjxx.getitemnumber(dw_wxjxx.rowcount(),"wxj_id"))


这句代码存在问题。没有进行数据行的判断
除非你保证dw_wxjxx刷新后一定有数据行,如果检索数据后,没有数据行,就会报错的

建议改一下

long ll_RowCount

ll_RowCount = dw_wxjxx.RowCount()
if ll_RowCount>0 then
    dw_wxjtjxx.retrieve(ll_RowCount,"wxj_id"))

end if
  相关解决方案