以文本方式查看主题

-  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 时间 >= #" & & "# and 时间 < #" & t.AddSeconds(1) & "#")