FPC报价模块配置 UpdateCommand影响了预期 1 条记录中的 0 条 解决办法

今天在增加P4厂 FPC报价模块配置,增加刚挠信息节点,在保存时报错:UpdateCommand影响了预期 1 条记录中的 0 

 保存时使用:SqlDataAdapter批量更新DataTable,怎么回事呢,以前使用SqlDataAdapter保存一切都好好的,

今天这咋咱不行了呢。

接着准备调试发现原因:

检查DataRow行RowState为 DataRowState.Modified OK呀,

接着检测DataTable数据,很正常,没发现问题

然后查看传入的参数,一切也没毛病

这就奇怪了。

想想以前研究过:SqlDataAdapter批量更新机制,是能过传入Select SQL与DataTable自动生成SQL达到批量更新,

于是我用用SQL Server Profile工具,原因直接定位为Update SQL,查看Update SQL语句,

发现Where条件中的Params字段是String型Flase或True  

原来问题出在这里,两边数据类型不一致

UI界面中Params为bool类型

数据库中Params为String类型

找到问题点解决问题点,就很容易决此问题了,

要想实现使用SqlDataAdapter批量保存,且为了达到底层数据用string,UI界面使用bool,实现兼容,

解决办法:

1.在读取数据源前,先将数据源中Params字段值1改为True,0改为Flase字符

2.将模版更新到实际数据源中,保证数据源为全集(必须操作此步,不然用SqlDataAdapter保存也出错,不然得换种方式保存)

3.由于UI界面是bool,数据源为String类型,读取时将String转为bool

4.接着正常使用SqlDataAdapter即可

UI示例:

DB示例:

原文地址:https://www.cnblogs.com/pcbren/p/8552862.html