以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 列中能否有动态变量? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=98860) |
-- 作者:happyft -- 发布时间:2017/4/8 11:17:00 -- 列中能否有动态变量? 比如在表A有一字段flt ,其值为"录入部门 = \'" & MyGroup & "\' dim dr as datarow = datatables("表A").Find("flt is not null") if dr isnot nothing then dim str as string = "se lect * from 订单 where " & dr("flt") end if 上面的做法就是想生成实际的 str = "se lect * from 订单 where 录入部门 = \'" & MyGroup & "\' 用于查询 但上面红色部门的写法会导致出错,请教如果字段中有变量要怎么引用? 谢谢!
|
-- 作者:有点蓝 -- 发布时间:2017/4/8 12:01:00 -- 这种只能是动态编译了,参考http://www.foxtable.com/webhelp/scr/1487.htm |
-- 作者:逛逛 -- 发布时间:2017/4/8 12:13:00 -- 或许可以用 Var变量过渡一下 dim str as string = "se lect * from 订单 where 录入部门 = \'" & Vars(dr("flt")) & "\'"
|
-- 作者:有点蓝 -- 发布时间:2017/4/8 12:19:00 -- 楼主dr("flt")里存储的是:"录入部门 = \'" & MyGroup & "\' 这种内容,上面的方式的话要改变存储的内容才行
|
-- 作者:逛逛 -- 发布时间:2017/4/8 12:48:00 -- 那只是一个文本的分割拼接操作而已 |
-- 作者:逛逛 -- 发布时间:2017/4/8 20:58:00 -- 还是写一个吧 Dim s As String = dr("flt") Dim ss() As String = s.Split("&") Dim s3 As String = " " Dim s4 As String For i As Integer = 0 To ss.Length - 1 If i Mod 2 = 0 Then s4 = ss(i).TrimEnd(""""," ") If i > 0 Then s4 = s4.TrimStart(" ","""") End If s3 += s4 Else s3 += Vars(ss(i).Trim()) End If \'Output.show(s3) Next dim str as string = "sel ect * from 订单 where " & s3 |
-- 作者:HappyFt -- 发布时间:2017/4/10 9:27:00 -- 谢谢各位老师,谢谢逛逛,dr("flt")里存储的是:"录入部门 = \'" & MyGroup & "\' MyGroup就是想代表一个变量,因为不同的用户登录可能MyGroup就不同,想根据这个条件加载不同的数据, 但可能会存在几个变量的情况,感觉拆分起来有点麻烦,自己研究看看再说了.
|
-- 作者:有点色 -- 发布时间:2017/4/10 9:32:00 -- 只要你的条件表达式不是太复杂,那就能拆分。越是固定格式的越容易拆。
如果你是希望自定义的话,那最好还是用动态编译。 |
-- 作者:jspta -- 发布时间:2017/4/10 9:48:00 -- 尝试用cexp方法代替,直接写变量思路换下就行了 |
-- 作者:逛逛 -- 发布时间:2017/4/10 9:51:00 -- 6楼的代码就是根据楼主的条件写的,只要格式不变,多个条件也行。前提是要用Var变量(我没检查变量是否存在)。 楼主可以测试一下。
当然楼主的方法,个人认为不是很方便。我会另开贴说明我的建议。 |