以文本方式查看主题

-  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语法