以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]一表修改字段值,想另一表修改相应字段,但是却增加行,什么原因? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157243) |
-- 作者:chh2321 -- 发布时间:2020/10/9 16:45:00 -- [求助]一表修改字段值,想另一表修改相应字段,但是却增加行,什么原因? 老师,请教问题: If e.DataRow("成员序号") IsNot Nothing And e.DataRow.IsNull("日期") = False And e.DataRow.IsNull("时间") = False Then If e.DataRow("项目") Like "*餐" Then Dim dr As DataRow dr = DataTables("tblYS").Find("成员序号 = \'" & e.DataRow("成员序号") & "\' and 日期 =#" & e.DataRow("日期") & "# and 时间 = #" & e.DataRow("时间") & "#") If dr IsNot Nothing Then dr("项目") = e.DataRow("项目") dr("备注") = e.DataRow("备注") Else dr = DataTables("tblYS").AddNew dr("成员序号") = e.DataRow("成员序号") dr("日期") = e.DataRow("日期") dr("时间") = e.DataRow("时间") dr("项目") = e.DataRow("项目") dr("备注") = e.DataRow("备注") End If End If 上述代码,我是想“项目”或“备注”字段修改时,当dr存在时,表tblYS中dr行的“项目”和“备注”字段相应被修改,但表tblYS会新增行,这是什么原因?
[此贴子已经被作者于2020/10/9 16:46:29编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/10/9 16:57:00 -- 如果这个就是事件完整代码,先看看:http://www.foxtable.com/webhelp/topics/1522.htm 代码没有问题,说明没有符合条件的数据。 "时间"列有时分秒?
|
-- 作者:chh2321 -- 发布时间:2020/10/9 17:17:00 -- 明白了,那就是时间列的问题了,时间列表现的是00:00格式,但后台记录可能还有毫秒 |
-- 作者:有点蓝 -- 发布时间:2020/10/9 17:22:00 -- 是的。一般不要使用时间进行比较,最好是自定义的编号这种 |
-- 作者:chh2321 -- 发布时间:2020/10/11 11:40:00 -- Dim t as String = e.datarow("时间") If e.DataRow("成员序号") IsNot Nothing And e.DataRow.IsNull("日期") = False And e.DataRow.IsNull("时间") = False Then If e.DataRow("项目") Like "*餐" Then Dim dr As DataRow dr = DataTables("tblYS").Find("成员序号 = \'" & e.DataRow("成员序号") & "\' and 日期 =#" & e.DataRow("日期") & "# and 时间 = #" & t.Substring(0,5) & "#") If dr IsNot Nothing Then dr("项目") = e.DataRow("项目") dr("备注") = e.DataRow("备注") Else dr = DataTables("tblYS").AddNew dr("成员序号") = e.DataRow("成员序号") dr("日期") = e.DataRow("日期") dr("时间") = e.DataRow("时间") dr("项目") = e.DataRow("项目") dr("备注") = e.DataRow("备注") End If End If 老师,我发现上述代码可解决时间列的问题。 不好意思,发错了,还是解决不了问题。
[此贴子已经被作者于2020/10/11 11:44:50编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/10/11 20:45:00 -- 如果一秒钟之内可能会有好几个值,只是毫秒不同,基本没有办法直接判断的。建议保存数据的时候格式化一下,去掉毫秒值 如果一秒钟之内只有一个值,这样 Dim t as date = e.datarow("时间") dr = DataTables("tblYS").Find("成员序号 = \'" & e.DataRow("成员序号") & "\' and 日期 =#" & e.DataRow("日期") & "# and 时间 >= #" & t & "# and 时间 < #" & t.AddSeconds(1) & "#")
|