hur.cn - 华软网

 热门搜索

rowscopy()怎么老是不成功?

  作者:未知    来源:网络    更新时间:2018/5/16
我用的是PB6.5
表结构完全相同,顺序也相同。数据窗口分别是dw_1,dw_2,放在同一窗口w_zk。
int currow
currow = w_zk.dw_1.getrow()
w_zk.dw_1.rowscopy(currow,currow,Primary!,w_zk.dw_2,1,Primary!)
就是不能成功,return=-1,各位帮忙看看,错在那里?
------华软网友回答------
二个dw的数据源必须完全一样
------华软网友回复------
getrow() > 0 吗?
------华软网友回复------
二个表,table_1,table_2,表结构完全一样,table_2就是table_1用数据管道生成的,能不一样吗?
但就是不行,以前的帖子也查了,都说要一样,可就是不成功。到底问题在那里?
------华软网友回复------
getrow()绝对大于0
------华软网友回复------
排序也一样,光标顺序也一样
------华软网友回复------
楼主把dw_2的dataobject设成与dw_1的dataobject相等的试试看把
------华软网友回复------
不能相等,否则区分不了dw_1,dw_2了,我试了,不行,乱了
------华软网友回复------
看来语法上没问题吧,我查了历来的帖子,也都没说完全的,是不是pb的bug。
如果不行。只能用笨办法了,不过有简单一点的SQL语法的,不要每一个字段select出来放入变量中,再insert到第二个表中。如果字段一多那就苦了。
------华软网友回复------
表结构一样不一样无所谓,关键是数据窗口的select后的字段列表是否一样
------华软网友回复------
毛毛熊朋友,我没有用select 二个数据窗口在窗口中打开后,就用rowscopy()了,没用到select啊?
请指教!
------华软网友回复------
我所说的是dw的datasource,并不特指表结构呀
------华软网友回复------
什么叫二个数据源完全一样?是否要同一个表吗?二个表名不一样,但其它都一样行不行呢?
表结构一样,字段也一样,就是表名称不一样,数据窗口名也不一样,可以吗?
------华软网友回复------
顺序一样吗?
------华软网友回复------
一样的。我查了有史以来的帖子,都没有圆满地解决。我不想再花时间了。
用dw_1.getitem()再用dw_2.setitem(),一下子就成功了。
谢谢各位。
------华软网友回复------
怎么我没遇过这种问题? 可能是某个列的位置有些不同,不防试试两个DW用同一个dw object,然后用rowscopy肯定没问题
------华软网友回复------
试一下.dw_2.object.data[1] = dw_1.object.data[1]
------华软网友回复------
dw_2.Object.Data = dw_1.Object.Data
------华软网友回复------
table_2就是table_1用数据管道生成的 所以表结构应该是一样的   
保证两者一致,是指打开数据窗口 点击工具栏中的‘SQL’可以看到数据窗口的后台获取额数据列
 例如 SELECT "haveallotshouldacceptmoney"."id",   
         "haveallotshouldacceptmoney"."deptname",   
         "haveallotshouldacceptmoney"."outdate",   
         "haveallotshouldacceptmoney"."saleid",   
         "haveallotshouldacceptmoney"."salemoney",   
         "haveallotshouldacceptmoney"."moveid",   
         "haveallotshouldacceptmoney"."salereturn",   
         "haveallotshouldacceptmoney"."madedate",   
         "haveallotshouldacceptmoney"."invoice",   
         "haveallotshouldacceptmoney"."invoicemoney",   
         "haveallotshouldacceptmoney"."gatheringdate",   
         "haveallotshouldacceptmoney"."gatheredmoney",   
         "haveallotshouldacceptmoney"."shouldmoney",   
         "haveallotshouldacceptmoney"."com1",   
         "haveallotshouldacceptmoney"."com2",   
         "haveallotshouldacceptmoney"."com3",   
         "haveallotshouldacceptmoney"."com4",   
         "haveallotshouldacceptmoney"."com5",   
         "haveallotshouldacceptmoney"."com6",   
         "haveallotshouldacceptmoney"."com7"  
    FROM "haveallotshouldacceptmoney"   
需要保证两个数据窗口的列的先后顺序一致,  而不是前台看到的顺序。

如果没有问题的话
int currow
currow = w_zk.dw_1.getrow()
If currow > 0  and isvalid(w_zk) Then
   w_zk.dw_1.rowscopy(currow,currow,Primary!,w_zk.dw_2,1,Primary!)
End If 

------华软网友回复------
不用说了,楼主的表名不同,这个是用不了rowcopy的!!
------华软网友回复------
不要误导了楼主呀

rowscopy不需要dw1和dw2有相同的数据源,甚至于不需要dw1和dw2的字段名相同。
可以说,rowscopy的唯一标准是:dw1和dw2拥有相同的字段类型和结构。

例如:
dw1有:long , char , char , long
那么,dw2也要有: long , char , char , long
但是不需要这4个列的名字相同,更不需要两个表的名字相同
------华软网友回复------
建议楼主运行一下 pb examples ,那里面有rowscopy,看看能否成功
------华软网友回复------
确认如 davidtc(我說兩句)  根本上只用对应字段的数据类型一致
------华软网友回复------
哈。。我刚使用过RowsCopy,,一点问题都没      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。