页面载入中....
Google


ITableSort与Update的问题。
zdq 发表于 2007-4-28 14:50:00

使用ITableSort可以对表进行排序,但是排序後如果用Row.Store()更新记录会非常慢。比较好的办法是先遍历排序表获得一个HashTable,然后从表通过Update方法获得一个可更新的ICursor,然后使用UpdateRow和Flush来更新。速度快很多。片段代码如下:

      '提高效率的办法,不用.Store,首先获得一个OID,和顺序编号的HashTable
      Dim IDHash As New Hashtable
      Do While Not pRow Is Nothing
        ' Debug.Print(pRow.Value(XIndex) & " , " & pRow.Value(YIndex))
        IDHash.Add(pRow.OID, ID)
        ID += 1
        ' pRow.Store()
        pRow = pCursor.NextRow
      Loop

      '然后更新!!
      Dim UpdateCursor As ICursor = pTableSort.Table.Update(Nothing, False)
      pRow = UpdateCursor.NextRow
      Do Until pRow Is Nothing
        If XOffset <> 0 Then pRow.Value(XIndex) = pRow.Value(XIndex) + XOffset
        If YOffset <> 0 Then pRow.Value(YIndex) = pRow.Value(YIndex) + YOffset
        MaxCol = Math.Max(MaxCol, pRow.Value(XIndex))
        MaxRow = Math.Max(MaxRow, pRow.Value(YIndex))
        pRow.Value(WASPIDIndex) = IDHash(pRow.OID)
        UpdateCursor.UpdateRow(pRow)
        pRow = UpdateCursor.NextRow
      Loop
      UpdateCursor.Flush()

 


阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
页面载入中....

 

页面载入中....

  公告
页面载入中....

  我的分类(专题)
页面载入中....
  日志搜索
    最近日志
页面载入中....

  最新评论
页面载入中....

  留言板
页面载入中....

  链接

  Blog信息
页面载入中....





Powered by Oblog.