Foxtable(狐表)用户栏目专家坐堂 → [求助]一表修改字段值,想另一表修改相应字段,但是却增加行,什么原因?


  共有3576人关注过本帖树形打印复制链接

主题:[求助]一表修改字段值,想另一表修改相应字段,但是却增加行,什么原因?

帅哥哟,离线,有人找我吗?
chh2321
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
[求助]一表修改字段值,想另一表修改相应字段,但是却增加行,什么原因?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110727 积分:563555 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/9 16:57:00 [只看该作者]

如果这个就是事件完整代码,先看看:http://www.foxtable.com/webhelp/topics/1522.htm

代码没有问题,说明没有符合条件的数据。

"时间"列有时分秒?

 回到顶部
帅哥哟,离线,有人找我吗?
chh2321
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2020/10/9 17:17:00 [只看该作者]

明白了,那就是时间列的问题了,时间列表现的是00:00格式,但后台记录可能还有毫秒

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110727 积分:563555 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/9 17:22:00 [只看该作者]

是的。一般不要使用时间进行比较,最好是自定义的编号这种

 回到顶部
帅哥哟,离线,有人找我吗?
chh2321
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110727 积分:563555 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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) & "#")

 回到顶部