以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  fill 加载表 不同的用户处理不同的行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48067)

--  作者:fubblyc
--  发布时间:2014/3/22 12:56:00
--  fill 加载表 不同的用户处理不同的行

我知道 select查询表 不同的用户处理不同的行的处理方法:

 

假定订单表有一个雇员列,希望每个雇员从后台加载数据的时候,只能加载自己负责的订单。
为此可以将BeforeLoad事件设置为:

If User.Group = "雇员" \'如果用户分组是雇员
    Dim fl As String = "[雇员] = \'" & User.Name &
"\'"
   
If e.DataTable.LoadFilter = "" Then

        e.
DataTable.LoadFilter = fl
    ElseIf
e.DataTable.LoadFilter.IndexOf(fl) < 0 Then
\'如果没有包括雇员条件
        e.
DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl
   
End If
End
If

 

那用fill加载的表要怎么做呢?

 

fill加载表方法:

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=47987

 

Dim sql,ex1,ex2,filter as string
Filter  =""   \'你的条件
ex1 = "Round(DateDiff(m,MAX(消费日期),GetDate()),0)"
ex2 = vbcrlf  & "(Case" & vbcrlf 
ex2+ ="When " & ex1 & "< 3 Then \'五星级活跃\'"  & vbcrlf 
ex2+ ="When " & ex1 & ">= 3 and " & ex1 & " < 6 Then \'三星级活跃\'" & vbcrlf 
ex2+= "Else  \'不活跃\'" & vbcrlf 
ex2+="End) As 活跃级别  " 

\'
If Filter > "" Then

 

 

sql = "select * from (select 归属门店代号,VIP卡号,MAX(消费日期) As 最后购买日期," & ex1 & " As 几个月没来买," & ex2 & " FROM " 
sql+="(rjsytVIP消费信息 LEFT JOIN rjsytVIP基本信息 ON (卡号 = VIP卡号 )) GROUP BY  VIP卡号, 归属门店代号) as a Where " & Filter
DataTables("VIP行为信息_VIP行为信息").Fill(sql,"VIP数据", True) 

 

End If
[此贴子已经被作者于2014-3-22 13:01:30编辑过]

--  作者:Bin
--  发布时间:2014/3/22 14:05:00
--  
应该是SQL语句错误了,你把拼接好的语句弹出来看一下才好分析.
--  作者:fubblyc
--  发布时间:2014/3/22 14:11:00
--  

哦,Bin老师,上面的语句没有错。

 

我的问题是

 

这种fill加载表的方式,怎么才能够 让不同的用户 加载不同的行。

 

就是不同的门店账号登录进来,只显示此登录门店账号的信息。别的门店的信息不显示。

 

是否可以这样:

在窗口的AfterLoad事件加上代码:

Tables("窗口1_Table1").Fill("Select * From {订单} Where 归属门店代号 = “”, False)
不知道怎么写。。。

[此贴子已经被作者于2014-3-22 14:11:28编辑过]

--  作者:Bin
--  发布时间:2014/3/22 14:12:00
--  
在FIlter里拼接啊

Filter= Filter & " and 归属门店代号=\'" & User.name & "\'"

--  作者:fubblyc
--  发布时间:2014/3/22 14:16:00
--  
哈哈。可以了。还是基础不扎实。谢谢Bin老师!!!
--  作者:fubblyc
--  发布时间:2014/3/22 16:31:00
--  

各位老师好,我遇到这样的问题:
有不同类型的用户,一种是门店用户(门店登录账号),一种是销售主管账号。
 
实现哪个门店账号登录的就只查询该门店的信息  的代码我这样写,可以实现:
sql = "select * from (select 归属门店代号,VIP卡号,MAX(消费日期) As 最后购买日期," & ex1 & " As 几个月没来买," & ex2 & " FROM " 
sql+="(rjsytVIP消费信息 LEFT JOIN rjsytVIP基本信息 ON (卡号 = VIP卡号 )) GROUP BY  VIP卡号, 归属门店代号) as a Where " & Filter   & " and 门店登录账号=\'" & User.name & "\'" 
DataTables("VIP行为信息_VIP行为信息").Fill(sql,"VIP数据", True) 
 
 
 
而同时想实现 销售主管 登录时显示他所管辖的门店的信息,通过下面代码可以实现:
sql = "select * from (select 归属门店代号,VIP卡号,MAX(消费日期) As 最后购买日期," & ex1 & " As 几个月没来买," & ex2 & " FROM " 
sql+="(rjsytVIP消费信息 LEFT JOIN rjsytVIP基本信息 ON (卡号 = VIP卡号 )) GROUP BY  VIP卡号, 归属门店代号) as a Where " & Filter   & " and 门店登录账号=\'" & User.name & "\'"  & " Or 销售主管登录账号=\'" & User.name & "\'"
DataTables("VIP行为信息_VIP行为信息").Fill(sql,"VIP数据", True) 
 
但是遇到了问题:
销售主管登录后,是只显示他所管辖的门店信息,但是就不能进行其他的加载(比如只加载他所管辖的门店的其中一个),因为不管再加载什么内容,Or 销售主管登录账号=\'" & User.name & "\'" ,因为都满足这个条件,所以就只要是这个销售主管所管辖的门店,就都全部显示了。。。
 
 
我知道是  OR  的问题,但是不知道怎么改。。。。
 
 

 

 

 


--  作者:Bin
--  发布时间:2014/3/22 16:34:00
--  
加一个括号

as a Where " & Filter   & " and (门店登录账号=\'" & User.name & "\'"  & " Or 销售主管登录账号=\'" & User.name & "\')"

--  作者:fubblyc
--  发布时间:2014/3/22 16:36:00
--  

哦,对,我也有这样的想法,但是自己没写对。

 

谢谢Bin 老师!!


--  作者:lsy
--  发布时间:2014/3/22 16:38:00
--  
 销售主管登录以后,加载了所辖多个门店的信息,如果想操作其中一个门店的信息,再筛选一下。
--  作者:fubblyc
--  发布时间:2014/3/25 8:46:00
--  

哦哦,谢谢lsy老师,正是这样操作!!哈,现在才看到帖子。知道怎么做了之后就埋头做了,没有再看帖子。。。

[此贴子已经被作者于2014-3-25 8:46:22编辑过]