Foxtable(狐表)用户栏目专家坐堂 → 动态加载问题


  共有1975人关注过本帖树形打印复制链接

主题:动态加载问题

帅哥哟,离线,有人找我吗?
xvkewen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:593 积分:5562 威望:0 精华:0 注册:2012/6/29 19:11:00
动态加载问题  发帖心情 Post By:2016/12/21 15:36:00 [只看该作者]

我想做到程序在启动的时候,可以根据后台数据表中保存的表达式来动态加裁,在Afteropenproject事件下添加以下代码;

Dim cl As DataRow = DataTables("RolesAuthorityControl").Find("Userroles = '" & _userroles & "'")
If cl IsNot Nothing Then
    Dim str As String = cl("RunloadFilter")
    DataTables("mainschedule").LoadFilter= str
    msgbox(str)
        DataTables("mainschedule").Load()
End If

 

执行完毕后没有报错,但没有加载到任何数据,但时如果将DataTables("mainschedule").LoadFilter= str代码替换为如下代码,则加载正常;

 

DataTables("mainschedule").LoadFilter ="[ScheduleStu] = '正常' and [QAgroup] = '" & _userteam & "' and [SamplePrepareStu] = 'false'"

 

下图是MSGBOX的弹窗,其实Str字符串与"[ScheduleStu] = '正常' and [QAgroup] = '" & _userteam & "' and [SamplePrepareStu] = 'false'"相同,难道是Str里面的_userteam不能够执行?


图片点击可在新窗口打开查看此主题相关图片如下:qq截123.jpg
图片点击可在新窗口打开查看

如果此方法行不通,有没有其他别的方法?主要是不想在Afteropenproject事件加载的时候使用过多的静态代码;


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2016/12/21 15:42:00 [只看该作者]

_userteam  没赋值

 回到顶部
帅哥哟,离线,有人找我吗?
xvkewen
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:593 积分:5562 威望:0 精华:0 注册:2012/6/29 19:11:00
回复:(blackzhu)_userteam  没赋值  发帖心情 Post By:2016/12/21 15:52:00 [只看该作者]

从使用DataTables("mainschedule").LoadFilter ="[ScheduleStu] = '正常' and [QAgroup] = '" & _userteam & "' and [SamplePrepareStu] = 'false'"加载正常来看,全局代码的_userteam其实是有赋值的;

 

会不会在Str变量里的表达式,把_userteam就只当作了普通的字符串处理了,没有当作全局变量来取值呢?


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 16:04:00 [只看该作者]

 字符串不能直接用。

 

 必须动态编译一次,才能得到 _userteam 的值

 

http://www.foxtable.com/webhelp/scr/1487.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
xvkewen
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:593 积分:5562 威望:0 精华:0 注册:2012/6/29 19:11:00
  发帖心情 Post By:2016/12/21 16:36:00 [只看该作者]

我在Afteropenproject事件里自定义以下动态函数

dim code as string

code = cl("Runloadfilter")

functions.add("loadstr",code)

functions.complie()

 

 

datatables("mainschedule").loadfilter = functions.execute("loadstr")

 

提示以下错误,怎么办?

 


图片点击可在新窗口打开查看此主题相关图片如下:img_20161221_163433.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
xvkewen
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:593 积分:5562 威望:0 精华:0 注册:2012/6/29 19:11:00
回复:(有点色) 字符串不能直接用。 ...  发帖心情 Post By:2016/12/21 16:47:00 [只看该作者]

原来是函数写错了;改成这样就没问题了;谢谢你

 

dim code as string

code = “dim str as string =” & cl("Runloadfilter") & vbcrlf

code = code & "return str"

functions.add("loadstr",code)

functions.complie()


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 17:29:00 [只看该作者]

前面,应该加一句

 

functions.remove("loadstr")


 回到顶部
帅哥哟,离线,有人找我吗?
xvkewen
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:593 积分:5562 威望:0 精华:0 注册:2012/6/29 19:11:00
回复:(有点色)前面,应该加一句 function...  发帖心情 Post By:2016/12/21 21:54:00 [只看该作者]

如果不用Remove,这个动态函数会一直存储程序里吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 22:53:00 [只看该作者]

以下是引用xvkewen在2016/12/21 21:54:00的发言:

如果不用Remove,这个动态函数会一直存储程序里吗?

 

如果你重复多次使用此名称的函数,你就必须先remove掉,才能add的,不然会报错。


 回到顶部