以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  每天自动更新日期  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59424)

--  作者:tubairabbit
--  发布时间:2014/11/4 9:33:00
--  每天自动更新日期

根据录入的“入库日期”,计算出“库存天数”,即Date.today - e.datarow("入库日期"),需要每天更新。

 

目前想到的方案一是:在afteropenproject中写上重置“入库日期”的代码

DataTables("A").DataCols("入库日期").RaiseDataColChanged()

但是因为数据量比较大,所有行都重置一遍再保存需要较长时间,造成每个用户每次打开项目并保存的时间过长。

 

考虑到每天只需更新一次,不必每个用户每次打开项目都得重置,方案二是:

使用计划管理,且限定管理员执行重置“入库日期”的代码,另外在服务器上长时间开启客户端程序。

 

只知道在计划中设置时间间隔,请教如何实现每天早上6:00执行该重置列的计划呢?或者有更好的每天更新日期的方法?

 


--  作者:有点甜
--  发布时间:2014/11/4 9:35:00
--  

1、弄一个地方,比如一个表格,设置一个标志。

 

2、在afterOpenProject的时候,如果今天没有更新过,就更新一下,在标识列那里记录;

 

3、在afterOpenProject查询标志


--  作者:Bin
--  发布时间:2014/11/4 9:35:00
--  
用方案1 可以用分页加载,这样就没有大量数据的效率烦恼
--  作者:tubairabbit
--  发布时间:2014/11/4 9:56:00
--  

通过标识列对我来说实现起来比较简单,但是意味着每天第一个开启项目的用户保存起来会慢。

想让这个工作由管理员承担,每天自动进行有否可能。

或者通过windows的计划任务,定时启动foxtable开发的客户端程序,再自动关闭,有没有可能?

[此贴子已经被作者于2014-11-4 9:57:05编辑过]

--  作者:有点甜
--  发布时间:2014/11/4 10:17:00
--  

 可以,你单独做一个带有更新代码的项目,在服务器那里定时打开,执行完以后,在afterOpenProject最后把项目关闭即可。


--  作者:tubairabbit
--  发布时间:2014/11/4 10:24:00
--  

如果用分页加载,在afteropenproject中的重置代码是只对加载的那部分数据起作用吧?

那翻页后的新数据,怎样写代码更新?

保存的时候,是只保存加载的当前页数据吗?

 


--  作者:Bin
--  发布时间:2014/11/4 10:26:00
--  
翻页后接着写上更新代码
--  作者:tubairabbit
--  发布时间:2014/11/4 16:22:00
--  

单独做了一个项目

在afteropenproject中加上

DataTables("A").DataCols("入库日期").RaiseDataColChanged()

Syscmd.Project.Save()

Syscmd.Project.Exit()

能实现自动更新、保存、关闭项目

 

现在问题是,登录需要输入用户名、密码,怎么让windows计划任务调用客户端程序时自动输入密码,打开项目呢?

(用默认用户的方法不行,我的用户表是外部数据源)


--  作者:有点甜
--  发布时间:2014/11/4 16:43:00
--  

 你设置的这个项目不需要使用用户表的,单独一个项目就行。


--  作者:tubairabbit
--  发布时间:2014/11/6 9:11:00
--  

谢谢!

将服务器版的用户表去掉外部数据表的勾,设了默认用户,发了个版本放服务器。windows任务计划再调用一下。

经检验已经能够定时更新了。