以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 直接在远程数据库表里做判断? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54748) |
-- 作者:fubblyc -- 发布时间:2014/8/4 9:36:00 -- 直接在远程数据库表里做判断? 各位老师好,遇到一个小问题。。
我有2张表,以及用这两张表在数据库做成的视图 一张:{顾客档案表}(数据表,可编辑、可保存)(列:顾客姓名、顾客电话、归属门店、录入时间等等) 一张:{顾客回访表}(数据表,可编辑、可保存)(列:顾客姓名、顾客电话、回访时间、回访内容) 这两张表在数据库做成的视图:{顾客回访分析}(视图或者叫做查询表,只可编辑、不可保存)(列:顾客姓名、顾客电话、归属门店、录入时间、最后一次回访时间)【最后回访时间】 是{顾客回访表}的【回访时间】 的 MAX
现在想实现这样一个效果。
在每次打开项目后,判断:
如果 【归属门店】不为空 且 【今天时间】-【录入时间】 >=30天 且 【最后一次回访时间】<=【录入时间】, 则 将 {顾客档案表}中的 【归属门店】 的符合上面条件的行 的内容清空 否则,不做任何改变。
那是不是 要把 {顾客回访分析}表里的数据给全部加载到项目里的一个临时表,然后遍历所有行,再进行判断呢? 这样效率会不会比较低,不知道有没有更好的办法,直接在数据库里判断。。。
[此贴子已经被作者于2014-8-4 9:42:24编辑过]
|
-- 作者:Bin -- 发布时间:2014/8/4 9:45:00 -- update {顾客回访分析} set 归属门店 = "" where DateDiff(\'d\',今天时间,录入时间)>=30 and 最后一次回访时间<=录入时间 |
-- 作者:有点甜 -- 发布时间:2014/8/4 9:46:00 -- 1、做一个视图,在{顾客回访分析}加入条件 【今天时间】-【录入时间】 >=30天 且 【最后一次回访时间】<=【录入时间】,加载这个表,然后得到归属门店,比如用 DataTables().GetComboListString,然后弄成条件更新{顾客档案表},比如 where 归属门店 in (xxx,xxx,xxx) |
-- 作者:有点甜 -- 发布时间:2014/8/4 9:48:00 -- 2、或者1的过程不经过foxtable,你直接在数据库写一个存储过程或函数,通过update select语句直接实现你的功能。 |
-- 作者:有点甜 -- 发布时间:2014/8/4 9:49:00 -- 3、或者在foxtable直接写sql语句更新内容,通过update select语句直接实现。 |
-- 作者:fubblyc -- 发布时间:2014/8/4 10:02:00 -- 明白了,谢谢Bin老大和甜老师!! |
-- 作者:fubblyc -- 发布时间:2014/8/4 10:25:00 -- 以下是引用有点甜在2014-8-4 9:48:00的发言:
2、或者1的过程不经过foxtable,你直接在数据库写一个存储过程或函数,通过update select语句直接实现你的功能。 甜老师,在数据库写的话,可以在foxtable自定义 30天 的这个天数吗? |
-- 作者:有点甜 -- 发布时间:2014/8/4 10:27:00 -- 可以,你可以在调用的时候把参数传过去,你在数据库那里定义接收参数。
exec 存储过程 30 |
-- 作者:fubblyc -- 发布时间:2014/8/4 11:19:00 --
[此贴子已经被作者于2014-8-4 11:49:30编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/8/4 11:34:00 -- 那你就直接在foxtable里面写sql语句,执行sql语句,参考2楼代码,去查一下update select语法 |