以文本方式查看主题

-  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变量(我没检查变量是否存在)。
楼主可以测试一下。


当然楼主的方法,个人认为不是很方便。我会另开贴说明我的建议。