我反复试验发现,不是sql限制更新记录条数,而是在第一次更新时,最后一条记录并没有更新到sql表中,需要在下一个事件发生时这条记录才更新,如打开浏览这个视图,或关闭这个视图。再做更新或保存时就没有‘更新冲突’问题了。但是,正常操作中不能关闭或浏览这个视图,如何解决这个问题?

解决方案 »

  1.   

    你在更新完了之后没有提交吧?解决方法:
        在vfp的sql语句运行结束,加一句“=sqlcommit(你的sql更新语句)”,呵呵!
      

  2.   

    这是一个采购合同入库的表单,操作步骤如下:
    1、从远程视图(cgrk1v)调入与某合同有关的记录到表cghtz中。
    2、表单上的GRID1是以cghtz为数据源。在表单上完成新数据添加后,再将数据更新到远程视图中去,更新过程是先判断是原有记录还是新记录,如果是旧记录则update否则就appe,其代码如下:sele cghtz
     m=0
    count all to m
    go topfor m=1 to m-1
    *=messagebox(str(m))
    sele cgrk1v
    locat for 合同号=thisform.text1.value.and.自编号=thisform.text2.value.and.序号=thisform.text3.value.and.xh=cghtz.xh
    if found()=.t.
    update  cgrk1v set 车号=cghtz.车号,品名=cghtz.品名,钢号=cghtz.钢号,规格=cghtz.规格,件数=cghtz.件数,重量=cghtz.重量,单价=cghtz.单价,;
    货款=cghtz.货款 where 合同号=thisform.text1.value.and.自编号=thisform.text2.value.and.序号=thisform.text3.value.and.xh=cghtz.xh
    else
    appe blank
    repl 合同号 with thisform.text1.value,自编号 with thisform.text2.value,序号 with thisform.text3.value,供货商 with thisform.text4.value,xh with cghtz.xh,;
    车号 with cghtz.车号,品名 with cghtz.品名,钢号 with cghtz.钢号,规格 with cghtz.规格,件数 with cghtz.件数,重量 with cghtz.重量,;
    单价 with cghtz.单价,货款 with cghtz.货款
    endif
    sele cghtz
    skip
    endfor
       我在保存数据时第一次执行上述的代码即使记录条数再多(如20条),也是最后一条没有更新,第二次执行保存时就要发生‘更新冲突’问题。如果在第一次执行后,关闭表单(其实也关闭了远程视图),再打开表单,再次执行保存更新数据就不发生这个问题,问题是这个表单正常操作不能关闭。