以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  查询表生成器中带有逻辑判断的表达式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148323)

--  作者:tld
--  发布时间:2020/4/5 9:40:00
--  查询表生成器中带有逻辑判断的表达式
老师好。我用查询表生成器生成查询表,出现了错误,请您帮忙解决下,谢谢老师!

Dim jb As New SQLJoinTableBuilder("查询表1","设备表")
jb.AddCols("设备名称", "数量","单价")
jb.AddExp("金额",iif("是否含税" = True,("数量 * 单价"),("数量 * 单价*1.06")))
Tables("窗口3_Table1").Fill(jb.BuildSql,"",True)


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


错误提示:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:窗口,窗口3,AfterLoad
详细错误信息:
从字符串“是否含税”到类型“Boolean”的转换无效。
输入字符串的格式不正确。

[此贴子已经被作者于2020/4/5 23:22:38编辑过]

--  作者:sloyy
--  发布时间:2020/4/5 10:08:00
--  
jb.AddExp("金额",iif("是否含税" = 1,("数量 * 单价"),("数量 * 单价*1.06")))
--  作者:tld
--  发布时间:2020/4/5 17:16:00
--  
老师,把true  改 为 1 后,出现同样的错误。
--  作者:sloyy
--  发布时间:2020/4/5 20:52:00
--  
哦 格式如下 : 

jb.AddExp("金额", "数量 * 单价")

你的整个表达式都写错了,表达式要用""包围起来, 你好好想想怎么构建这个表达式,先自己做,如果搞不定,我晚点再告诉你.


--  作者:有点蓝
--  发布时间:2020/4/5 22:40:00
--  
jb.AddExp("金额","iif(是否含税 = True,数量 * 单价,数量 * 单价*1.06)")

如果是SqlServer,iif改为case when用法:http://www.foxtable.com/webhelp/topics/1827.htm

--  作者:tld
--  发布时间:2020/4/6 0:05:00
--  
蓝老师,我最终使用sqlserver,但我实在想不出用case或when如何代替iif。iif是一行语句,jb.AddExp 在一行语句中完成,如果改成case或when,就得多行。如何写代码?
--  作者:有点蓝
--  发布时间:2020/4/6 10:07:00
--  
jb.AddExp("金额"," case when 是否含税 = True then 数量 * 单价 else 数量 * 单价*1.06 end")