none
奇怪的保存出错

    问题

  • 一、用VB.NET连接ACCESS数据库,读取表1,并进行计算操作,然后保存,很正常。

    然后根据表1计算出表2,并保存,也很正常。

    表1的数据变化了,根据表1重新计算表2,需要删除所有的表2数据,然后全部重新添加新数据。计算没有问题,添加也没有问题,就是保存的时候开始出错。

    保存方法是:

    Me.Validate()

    Me.表2BindingSource.EndEdit()

    Me.表2TableAdapter.Update(Me.DataSet.表2)

    二、第二个奇怪的地方

    为了可以保存,在保存之前先清除表2的所有数据。

    使用Me.DataSet.表2.clear()

    然后重新保存,没有错误提示。结果就是保存起不到任何作用,ACCESS里面表2数据好好的在哪里。

    2016年4月9日 10:41

答案

  • 已经找到解决的办法了,存储的顺序不对。

    删除用的方法不对,不要用datatable.clear()方法,临时表上用用还可以,因为不能update。

    直接使用removeat()或者delete()+AcceptChanges(),就不会出现这样的错误了。

    Update 时,执行的顺序如下:</sentencetext>

    1. DataRow 中的值移至参数值。</sentencetext>

    2. OnRowUpdating 事件。</sentencetext>

    3. <sentencetext xmlns="http://www.w3.org/1999/xhtml">执行命令。</sentencetext>

    4. FirstReturnedRecord,返回的第一项结果将放置在 DataRow 中。</sentencetext>

    5. DataRow 中。</sentencetext>

    6. OnRowUpdated。</sentencetext>

    7. AcceptChanges。</sentencetext>

    2016年4月14日 7:15

全部回复

  • 你好 Fengqiwuyong,

    根据我的理解,这个问题产生的原因是作为主键的值在表2中已经使用过,比如20. 然后在程序中全部删掉后再次插入20的时候就会显示为这个错误。 解决办法也非常简单,不要使用自增长的数字作为主键,用短文本作为Access的主键,这样当删除后添加重复值的时候就不会有这样的问题了。请尝试一下然后告知结果,谢谢。

    希望能够帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年4月11日 3:06
  • 按照您的说法,在ACCESS中设置主键为短文本,更新链接信息之后。操作中还是同样的现象,只要是全部删除,重复添加同样主键的信息,还是会导致保存失败。

    还有clear方法为什么单纯的删除了整个表格信息之后(没有添加新的数据),无法把对表格的更改回存到ACCESS中,程序执行没有错误提示,就是执行之后关闭程序,ACCESS里面表格并没有发生变更。这一点很奇怪,会不会是这个clear操作失败导致了所谓的索引重复之类的保存失败。


    fengqiwuyong@qq.com

    2016年4月11日 5:48
  • 按照您的说法,在ACCESS中设置主键为短文本,更新链接信息之后。操作中还是同样的现象,只要是全部删除,重复添加同样主键的信息,还是会导致保存失败。

    还有clear方法为什么单纯的删除了整个表格信息之后(没有添加新的数据),无法把对表格的更改回存到ACCESS中,程序执行没有错误提示,就是执行之后关闭程序,ACCESS里面表格并没有发生变更。这一点很奇怪,会不会是这个clear操作失败导致了所谓的索引重复之类的保存失败。


    fengqiwuyong@qq.com


    具体还要看你的程序是怎么写的, 你能提供下代码,看看具体是出错在哪里吗?请上传到任意的云空间并分享一个链接到论坛,谢谢。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年4月12日 1:56
  • 发现问题的例子

    链接是:

    http://pan.baidu.com/s/1eRWwk1s

    2016年4月13日 5:02
  • 已经找到解决的办法了,存储的顺序不对。

    删除用的方法不对,不要用datatable.clear()方法,临时表上用用还可以,因为不能update。

    直接使用removeat()或者delete()+AcceptChanges(),就不会出现这样的错误了。

    Update 时,执行的顺序如下:</sentencetext>

    1. DataRow 中的值移至参数值。</sentencetext>

    2. OnRowUpdating 事件。</sentencetext>

    3. <sentencetext xmlns="http://www.w3.org/1999/xhtml">执行命令。</sentencetext>

    4. FirstReturnedRecord,返回的第一项结果将放置在 DataRow 中。</sentencetext>

    5. DataRow 中。</sentencetext>

    6. OnRowUpdated。</sentencetext>

    7. AcceptChanges。</sentencetext>

    2016年4月14日 7:15