以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 无法保存数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191768) |
-- 作者:edisontsui -- 发布时间:2024/5/8 16:19:00 -- 无法保存数据 If e.DataCol.name = "要求交货日期" Then If e.DataRow.isnull("要求交货日期") = False Then If e.DataRow.isnull("序号") Then Dim max As Integer = e.DataTable.SQLCompute("Max(序号)", "[_Identify] <> " & e.DataRow("_Identify")) \'取得最大序号 e.DataRow("序号") = max + 1 \'e.DataRow.save DataTables("叫料票号").save End If Else e.DataRow("序号") = Nothing \'e.DataRow.save DataTables("叫料票号").save End If End If 上面的代码,无论用 e.DataRow.save 还是 DataTables("叫料票号").save,都无法保存数据,因为我每次再增加一行时,e.DataRow("序号") 的数据不会增加 1。如果我先增加一行后,用人工保存一下数据库,再增加一行时,e.DataRow("序号") 的数据就会增加 1 了。请问是为什么呢?谢谢。
|
-- 作者:edisontsui -- 发布时间:2024/5/8 16:35:00 -- 上述代码是放在 datacolchanged 里面的。 |
-- 作者:有点蓝 -- 发布时间:2024/5/8 16:38:00 -- 这2种方法肯定是可以保存数据的。检查是不是有其它代码影响了 [此贴子已经被作者于2024/5/8 16:37:59编辑过]
|
-- 作者:edisontsui -- 发布时间:2024/5/8 16:41:00 -- 比如说可能是什么因素? |
-- 作者:edisontsui -- 发布时间:2024/5/8 16:51:00 -- Dim max As Integer = e.DataTable.SQLCompute("Max(序号)", "[_Identify] <> " & e.DataRow("_Identify")) \'取得最大序号 e.DataRow("序号") = max + 1 e.DataRow.save 我把上面代码放在 datarowadding 里面也是一样,保存不了,要人工保存才行。
|
-- 作者:有点蓝 -- 发布时间:2024/5/8 16:51:00 -- 比如这是一个查询表或者临时表。比如其它BeforeSaveDataRow等其它事件取消了保存。比如数据不完整,数据库无法保存。.... |
-- 作者:edisontsui -- 发布时间:2024/5/8 17:00:00 -- 这是一个数据表,不是查询表或者临时表。beforeSaveDataRow 里面没有代码。 "数据不完整,数据库无法保存",不知道哪个情况会这样。 我将1楼的第一行代码改为:If e.DataCol.name = "要求交货日期" OrElse e.DataCol.name = "票号日期" Then 即增加了一个变量,那么我在录入"票号日期" 后,就可以保存了。
|
-- 作者:edisontsui -- 发布时间:2024/5/8 17:01:00 -- 但是,如果在录入"piao号日期" 之前,连续增加多个数据行,每个新增行的 “序号” 就不会发生变化。 |
-- 作者:有点蓝 -- 发布时间:2024/5/8 17:08:00 -- 要录入"要求交货日期", "piao号日期"其中一个,才会触发事件 |
-- 作者:cd_tdh -- 发布时间:2024/5/8 17:10:00 -- 序号生成的规则是怎么样的? |