以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于e.SelectString使用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59514)

--  作者:skyman1188
--  发布时间:2014/11/5 17:53:00
--  关于e.SelectString使用
我在BeforeLoadOuterTable里面下的如下语句

\'e.SelectString = "Select * From {订单表} Where [D2] = e.User.Name"

每一条订单我都有录入人员的工号,当登陆后希望只能显和登陆工号相等的订单,结果出错“加载表失败”,请问这一句该怎么写?

--  作者:有点甜
--  发布时间:2014/11/5 17:55:00
--  
e.SelectString = "Select * From {订单表} Where [D2] = \'" & e.User.Name & "\'"
--  作者:有点甜
--  发布时间:2014/11/5 17:57:00
--  
e.SelectString = "Select * From {订单表} Where [D2] = \'" & e.User.Name & "\'"
--  作者:skyman1188
--  发布时间:2014/11/5 18:19:00
--  还是不行啊
我列属性是整数,但是这样做还是不行啊,还是所有行都加载了。后面的LOAD语句是可以筛选掉,但是加载时间就比较长了。
我用的是sql server 2005
[此贴子已经被作者于2014-11-5 18:32:46编辑过]

--  作者:有点甜
--  发布时间:2014/11/5 19:09:00
--  

 1、肯定是可以的。

 

 2、你可以最初不加载任何数据,在afterOpenProject的时候再设置loadfilter,重新load一下


--  作者:skyman1188
--  发布时间:2014/11/6 10:33:00
--  可以了
谢谢群主是可以了。
我还有一个新问题,有一张员工资料表,表里面有工号和负责区域
载入订单表,根据这个负责的区域载入,我在BeforeLoadOuterTable该怎么写
e.SelectString = "Select * From {订单表} Where [区域] = 这里是员工资料表的区域那一项"

[此贴子已经被作者于2014-11-6 10:32:57编辑过]

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

 1、初始不要加载数据;

 

 2、在afterOpenProject事件里,根据登陆用户,查找数据,再设置loadfilter,重新load


--  作者:skyman1188
--  发布时间:2014/11/6 10:54:00
--  似乎有点问题
我在BeforeLoadOuterTable里面设置

If e.DataTableName = "订单表" Then
    e.SelectString = "Select TOP 0 * From {订单表}"
End If
就是载入0行。
然后在LoadUserSetting或者AfterOpenProject中写如下代码
Dim msg As String
  msg = ""
        DataTables("订单表").LoadFilter = msg
        DataTables("订单表").Load

结果打开后,还是没有载入内容,表显示了,内容是0行。


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

e.SelectString = "Select TOP 0 * From {订单表}"

 

改成

 

e.SelectString = "Select * From {订单表} where 1=2"


--  作者:skyman1188
--  发布时间:2014/11/6 11:44:00
--  应该试试可以了
打开速度应该快了很多,不然在BeforeLoadOuterTable后默认打开一次数据库,在LoadUserSetting设置权限时候,又打开一次数据库,变成重复工作了。

我这么说是否有道理?