以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]超过7天自动发mail通知。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86696)

--  作者:huhu
--  发布时间:2016/6/23 14:18:00
--  [求助]超过7天自动发mail通知。

 

入库单汇总表

有入库完成时间,在库生命周期,格式都是DateLongTime。

在库生命周期=现在的时间-入库完成时间,

如果在库完成时间大于7天就自动发mail出来。----发mail我写出来了。如何把在库时间大于7天写出来?


--  作者:大红袍
--  发布时间:2016/6/23 16:02:00
--  

条件可以这样写

 

DataTables("表A").Select("入库完成时间 <= #" & date.Now.AddDays(-7) & "# and 已发送 = false")


--  作者:huhu
--  发布时间:2016/6/23 16:22:00
--  
哦。那是不是应该写到计划表里面合适点。包括发送mail。
--  作者:大红袍
--  发布时间:2016/6/23 16:23:00
--  
 写到计划任务里面比较好,间隔半小时之类的。
--  作者:huhu
--  发布时间:2016/6/23 18:32:00
--  

还有,我如果一定需要在库生命周期这个值,这个值怎么能自动算出来。

每时每刻都在变化好像也不合适。怎么做合适呢?


--  作者:大红袍
--  发布时间:2016/6/23 19:29:00
--  
以下是引用huhu在2016/6/23 18:32:00的发言:

还有,我如果一定需要在库生命周期这个值,这个值怎么能自动算出来。

每时每刻都在变化好像也不合适。怎么做合适呢?

 

1、参考

 

http://www.foxtable.com/help/topics/1452.htm

 

2、没必要每时每刻都计算,打开项目计算一次,或者做个计划管理,间隔一段时间计算,都可以。


--  作者:huhu
--  发布时间:2016/6/24 10:01:00
--  

Dim dr As Row = Tables("库存明细表").Current
Dim tp As TimeSpan = Date.Now - dr("入库完成时间")
dr("在库生命周期") = tp.TotalDays
output.show(dr("在库生命周期"))

 

 


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

--  作者:大红袍
--  发布时间:2016/6/24 10:01:00
--  
Dim tp As TimeSpan = Date.Now - Cdate(dr("入库完成时间"))
--  作者:huhu
--  发布时间:2016/6/24 10:56:00
--  

这是计划1的代码:

Dim drs As List(of DataRow) = DataTables("库存明细表").SQLSelect("状态 = \'入库完成\'")
For  Each dr As DataRow In drs
    Dim d  As Integer
    Dim tp As TimeSpan = Date.Today - Cdate(dr("入库完成时间"))
    d= tp.TotalDays
    dr("在库生命周期") = CStr(d) & "天"
    dr.save
Next

我现在再想的问题是,这个库存明细表的行在后台都是locked = true。那么使用上面的代码能有效吗?还是使用sqlreplacefor?


--  作者:大红袍
--  发布时间:2016/6/24 11:06:00
--  

sqlSelect的行,不能直接save的

 

示例二

如果是数据表,可以修改通过SQLSelect筛选出来的行,并保存之:

Dim drs As List(of DataRow) = DataTables("订单").SQLSelect("产品 = \'PD01\'")
For Each
dr As DataRow In drs
   
dr("折扣") = 0.1
Next
DataTables(
"订单").SQLUpdate(drs)

SQLUpdate专门用于批量保存通过SQLSelect筛选出来的行。

提示:这只是一个介绍SQLSelect用法的例子,你真要更新后台数据,请使用SQLReplaceFor方法,会简洁高效很多。