以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  两段代码等效吗?请高手指点?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43524)

--  作者:wyz20130512
--  发布时间:2013/12/9 15:33:00
--  两段代码等效吗?请高手指点?

If e.DataRow("gysh") = "汪春阶" Or e.DataRow("gysh") = "管炳芳" Or e.DataRow("gysh") = "王逢礼" Or e.DataRow("gysh") = "陈柏安" Or e.DataRow("gysh") = "陈春桥" Or e.DataRow("gysh") = "叶景辉" Or e.DataRow("gysh") = "赵友玲" Then
    e.DataRow("rkshl") = e.DataRow("grshl")
End If

 

If e.DataRow("gysh") In ("汪春阶","管炳芳","王逢礼","陈柏安","陈春桥","赵友玲","叶景辉","李三","赖红平") Then
    e.DataRow("rkshl") = e.DataRow("grshl")
End If

 

第一段代码执行没错,而后段却报错?


--  作者:Bin
--  发布时间:2013/12/9 15:37:00
--  
第二段是错误的,代码并没有这样的语法,你把SQL 和表达式中的语法放进来使用肯定是不可以的.
--  作者:Bin
--  发布时间:2013/12/9 15:38:00
--  
这种情况你可以考虑使用 select case http://www.foxtable.com/help/topics/0224.htm
--  作者:wyz20130512
--  发布时间:2013/12/9 15:38:00
--  
上述代码是表中的hc_DataColChanged(某列内容发生变化后,触发该事件,),"hc”是后厨的意思。"gysh"是供应商,"grshl"是购入数量,"rkshl"是入库数量。
--  作者:wyz20130512
--  发布时间:2013/12/9 15:48:00
--  
还是不理解,可帮助文档“条件表达式”中可以这样使用的呀?是的,我用Select Case 实现了第一段代码的简化。
--  作者:wyz20130512
--  发布时间:2013/12/9 15:50:00
--  

示例十一

筛选产品为PD01、PD02、PD03的行:

产品 In (\'PD01\',\'PD02\',\'PD03\')

或者

产品 = \'PD01\' or 产品 = \'PD02\' or 产品 = \'PD03\'

显然这个时候,用In运算符要简洁很多。

记得数值型的列,值不要用单引号括起来,例如:

[订单号] In (1, 3, 4, 6, 7,12)

而日期型的列,值需要用符号#括起来,例如:

[日期] In (#7/2/2012#, #7/12/2012#, #8/30/2012#)


--  作者:Bin
--  发布时间:2013/12/9 15:53:00
--  
有什么不理解的,2楼不是很清楚明确 的告诉你了吗?

代码是代码 表达式是表达式,  是两个不同的东西.

你把表达式中的语法放进来使用肯定是不可以的.

--  作者:wyz20130512
--  发布时间:2013/12/9 16:17:00
--  
谢谢!慢慢地消化吧。