zhousky
论坛版主
论坛版主
  • 注册日期2003-08-01
  • 发帖数281
  • QQ
  • 铜币1027枚
  • 威望3点
  • 贡献值0点
  • 银元0个
阅读:1482回复:3

更新TABLE中的字段值后,再store时,发生错误,请大家帮忙?

楼主#
更多 发布于:2004-08-26 15:45
Public Sub AddTable<I>value</I>()
  Dim paaSet As IPropertySet
  Set paaSet = New PropertySet
    With paaSet
      .SetProperty "SERVER", "gis"
      .SetProperty "INSTANCE", "5151/tcp"
      .SetProperty "DATABASE", "sde"
      .SetProperty "USER", "sa"
      .SetProperty "PASSWORD", "sa"
      .SetProperty "VERSION", "sde.default"
    End With
  Dim pWorkspaceFactory As IWorkspaceFactory
  Set pWorkspaceFactory = New SdeWorkspaceFactory
  Dim pWorkspace As IWorkspace
  Set pWorkspace = pWorkspaceFactory.Open(paaSet, 0)
  Dim pTable As ITable
  Dim pFeatureWorkspace As IFeatureWorkspace
  Set pFeatureWorkspace = pWorkspace
  Set pTable = pFeatureWorkspace.OpenTable("综合数据")
  If pTable Is Nothing Then Exit Sub
  Dim pCursor As ICursor
  Set pCursor = pTable.Search(Nothing, False)
  Dim pRow As IRow
  Set pRow = pCursor.NextRow
  Do While Not pRow Is Nothing
    With pRow.Fields
      pRow.<I>value</I>(.FindField("统一编号")) = pRow.<I>value</I>(.FindField("编号"))
    End With
    pRow.Store   '///////////////////////////程序在这儿遇到了错误,大家能不能给个建议?
   Set pRow = pCursor.NextRow
  Loop
  MsgBox "操作成功"
  
End Sub


<P>
谢谢
</P>
喜欢0 评分0
不要看我噢
wangxiri
路人甲
路人甲
  • 注册日期2004-05-26
  • 发帖数21
  • QQ
  • 铜币157枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-08-27 10:29
<P>呵,工作空间没有处于可编辑状态</P><P>要用IworkspaceEdit这个东东来StartEditing和StartEditOperate才可以编辑的。</P><P> Set pCursor = pTable.Search(Nothing, False)</P><P>这句可换成</P><P>Set pCursor = pTable.Update(Nothing, False)
</P>
举报 回复(0) 喜欢(0)     评分
honghu
路人甲
路人甲
  • 注册日期2003-08-06
  • 发帖数113
  • QQ
  • 铜币292枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-08-30 09:44
<P>楼上的应该没错。</P><P>Cursor对象有三种类型</P><P>Cursor对象(包括其子类FeatureCursor)便于在一个对象中可以管理许多记录。Cursor中的记录集的子集可以通过空间条件,属性条件或同时使用这两种条件的过滤来定义。Cursor一旦创建,就可以很方便地循环调用其中的每一条记录。
从Table或Feature产生的Cursor有三种类型。具体是什么类型完全取决于生成Cursor所使用的方法。每种Cursor可用的接口是一样的,具有相同的方法和属性,但如果对于Cursor的类型和你的应用不复的话,调用这些方法时就会返回错误。
一\查询型Cursor
查询型Cursor是通过调用Search方法生成的,用来进行一些不必进行修改记录的操作,一般是一些统计计算,记录数计算或显示。
dim myCursor as IfeatureCursor
set  myCursor =pFClass.Search(pQFilter,False)
查询型Cursor不能调用诸如InsertRow,DeleteRow或UpdataRow方法。其唯一的方法是NextRow (NextFeature).用于顺序访问Cursor的每条记录。
二\更新型Cursor
更新型Cursor是通过在Table或FeatureClass中调用Updata方法创建的,用于生成Cursor的数据库中更新或删除记录。当然和查询型Cursor一样,都是通过QueryFilter对象生成的。它也使得可以保存所返回的Cursor中的,某些记录或全部记录(Nothing关键字)。更新型Cursor不能调用InsertRow(InsertFeature)方法。
Dim myCursor as IFeatureCursor
set myCursor=pFClass.Update(pQFilter,False)</P><P>三\插入型Cursor
通过在在Table或FeatureClass中调用Insert方法创建的。用于向生成Cursor的数据库中插入新的记录(Table中的行,FeatureClass中的要素)。插入型Cursor不需要QueryFilter参数。不支持NextRow(NextFeature)方法,也不支持UpdataRow方法。
Dim myCursor as IFeatureCursor
set myCursor=pFClass.Insert(Ture)</P>
举报 回复(0) 喜欢(0)     评分
wangcheng
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数141
  • QQ39308652
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-08-31 09:21
<P>顶~~~~~~~~~~~~</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部