当前位置: 代码迷 >> PB >> 数据量比较大,效率很低,有什么办法吗,该怎么处理
  详细解决方案

数据量比较大,效率很低,有什么办法吗,该怎么处理

热度:42   发布时间:2016-04-29 08:53:24.0
数据量比较大,效率很低,有什么办法吗
比如说程序里是这种情况:
外层循环1000次(dw)
内层循环50次(dw)
因为操作内层那个dw,所以要在内层循环里修改或者新增
这样好慢啊 

有没有什么办法判断内层那个dw数据是否改变 
如果可以的话我只需要修改改变的那些值



------解决方案--------------------
if dw.DeletedCount() > 0 OR dw.ModifiedCount() >0 THEN //DW内容修改过
 
end if

------解决方案--------------------
把你的需求说得再明确点,绝对有更好的处理方法的
------解决方案--------------------
GetNextModified method (DataWindows)
Description 

Reports the next row that has been modified in the specified buffer. //修改过的值

---

DeletedCount > 0 的话 

dw.GetItemString(1, "a", Delete!, FALSE) //从delete buffer中提取数据
------解决方案--------------------
在dw中增加一个计算列com_m,expression写为“If(IsRowModified(), getrow(), 0) = 1”
另外用另外一个包含一个long型列(mrow)的datawindow(d_modiiedyrow)来作为datastore lds 的dataobject

C# code
datastore ldslds = create datastorelds.dataobject = 'd_modiiedyrow'if dw.rowcount() > 0 then    lds.object.mrow.primary = dw.object.com_m.primary    lds.setfilter("mrow > 0"); lds.filter()    //这样一来lds的mrow中存储的就是dw中所有被修改的行的行号了end if
  相关解决方案