以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql数据库 的表达式列和加载loadfilter  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192370)

--  作者:lur320
--  发布时间:2024/6/18 14:45:00
--  sql数据库 的表达式列和加载loadfilter
 Dim t As String =  "un状态 is not null and un状态<>\'完工\' and (待验结余<>0 or 发货结余<>0)"
current table.datatable.load(false)
currenttable.filter=t

其中,
待验结余为表达式列:IIF([un状态]=\'待检\',[盒数],null)

发货结余也是表达式列:IIF([un状态]=\'待检\',null,IsNull([结余],[盒数]))
其余为普通列。


对于这种带有if的表达式。在使用loadfilter时,怎么写?
我现在是load,然后filter。感觉数据多了加载数据很慢。想优化加载方式只load需要的数据。
或者sql command的怎么写?
se1ect * from {} where un状态 is not null and un状态<>\'完工\' and

--  作者:lur320
--  发布时间:2024/6/18 15:04:00
--  
 se1ect *,(Case When un状态=\'待检\' Then 盒数 Else 0 End) As 待验结余,(case when un状态=\'待检\',0,ISNULL(结余,盒数)) as 发货结余 from {成品数据} where un状态 is not null and un状态<>\'完工\' and (待验结余 <> 0 or 发货结余<> 0)


为啥提示 “,”附近有语法错误。?

--  作者:lur320
--  发布时间:2024/6/18 15:06:00
--  
se1ect *, (Case When un状态=\'待检\' Then 盒数 Else 0 End) As 待验结余, (case when un状态=\'待检\' then 0 else ISNULL(结余,盒数) end) as 发货结余 from {成品数据} where un状态 is not null and un状态<>\'完工\' and (待验结余 <> 0 or 发货结余<> 0)


这个也不对。

列名 \'发货结余\' 无效。
列名 \'待验结余\' 无效。

--  作者:有点蓝
--  发布时间:2024/6/18 15:08:00
--  
如果[un状态]<>\'待检\',那么待验结余就是null,那么null是否符合【待验结余<>0】这个条件?
--  作者:lur320
--  发布时间:2024/6/18 15:12:00
--  
以下是引用有点蓝在2024/6/18 15:08:00的发言:
如果[un状态]<>\'待检\',那么待验结余就是null,那么null是否符合【待验结余<>0】这个条件?
可以改为0. 不影响结果


--  作者:lur320
--  发布时间:2024/6/18 15:12:00
--  
 OK 了。。。



se1ect *, (Case When un状态=\'待检\' Then 盒数 Else 0 End) As 待验结余, (case when un状态=\'待检\' then 0 else ISNULL(结余,盒数) end) as 发货结余 from {成品数据} where un状态 is not null and un状态<>\'完工\' and ((Case When un状态=\'待检\' Then 盒数 Else 0 End) <> 0 or (case when un状态=\'待检\' then 0 else ISNULL(结余,盒数) end <> 0))

--  作者:有点蓝
--  发布时间:2024/6/18 15:19:00
--  
Dim t As String =  "un状态 is not null and un状态<>\'完工\' and ([盒数]<>0 or [结余]<>0)"