以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教计划管理问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40117)

--  作者:sxqq123
--  发布时间:2013/9/10 7:52:00
--  请教计划管理问题


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20130910074936.jpg
图片点击可在新窗口打开查看

计划管理代码如下:

Static dt As Date
Dim tp As TimeSpan
tp = Date.Now - dt
If tp.TotalHours >= 24 Then
    DataTables("日期管理").load
    dt = Date.Today
    Dim dr As DataRow = DataTables("日期管理").Find("日期=#" & dt & "#")
    If dr Is Nothing Then
        Dr=DataTables("日期管理").AddNew
        Dr("日期")= dt
        DataTables("日期管理").Save()
    End If
End If

经常出现日期重复现象,请教如何改进代码?


--  作者:Bin
--  发布时间:2013/9/10 8:33:00
--  
 Dim dr As DataRow = DataTables("日期管理").Find("日期=#" & dt & "#")
    If dr Is Nothing Then

按道理这里判断了存在就不继续添加了,是不会有重复的.

你这个代码和例子我也测试过很久了.不会有问题,实在不解为何到你手上会出现重复.

--  作者:狐狸爸爸
--  发布时间:2013/9/10 9:18:00
--  

呵呵,是不是多人操作? 如果启动多个,就会有重复了。

如果多人操作,用sql语句检测和添加行比较合适。


--  作者:Bin
--  发布时间:2013/9/10 9:21:00
--  
24小时才执行一次,并且执行前先同步表了,到底多少人在操作才能那么巧合呀- - 那你只能写个存储过程来完成了.
--  作者:sxqq123
--  发布时间:2013/9/10 9:22:00
--  
项目已发布是多人操作,请指导一下用sql语句检测和添加行代码如何写。
--  作者:Bin
--  发布时间:2013/9/10 9:29:00
--  
select 查询出最大日期的哪一行,判断一下是否和当前日期一致,如果是一致则不增加,否则就增加一行为第一列赋值为当前日期 一样的做法.

你自己百度一下即可.

--  作者:狐狸爸爸
--  发布时间:2013/9/10 9:46:00
--  

如bin所言,按道理是不会有重复的了。

 

要不跟踪一下吧,看看什么时间,什么人增加了行。

你增加时间和用户两列,时间列的日期时间格式设置为LongDateTime,将你的代码改一下:

 

Static dt As Date
Dim tp As TimeSpan
tp = Date.Now - dt
If tp.TotalHours >= 24 Then

    DataTables("日期管理").Loadfilter = ""
    DataTables("日期管理").load
    dt = Date.Today
    Dim dr As DataRow = DataTables("日期管理").Find("日期=#" & dt & "#")
    If dr Is Nothing Then
        Dr=DataTables("日期管理").AddNew
        Dr("日期")= dt
        dr("时间")= Date.now
        dr("用户") = User.Name
        DataTables("日期管理").Save()
    End If
End If

[此贴子已经被作者于2013-9-10 9:59:50编辑过]

--  作者:sxqq123
--  发布时间:2013/9/10 9:55:00
--  
谢谢狐狸爸爸和BIN