以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  筛选条件表达式  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=191709)

--  作者:creastzh
--  发布时间:2024/5/4 14:49:00
--  筛选条件表达式
老师好, 我编写了一个表达式用于计算满足条件的数量:
Q_Ps = DataTables("WOReleaseSchedule").SQLCompute("Count(*)", FL1) \'计划入库行

筛选条件表达式:
FL1 = "SalesOrder=\'" & SOLine & "\' And LineNo=\'" & LineNo1 & "\' and BomLevel Like \'" & BL & ".%\' and Completed=\'C\'"
用Output.show(FL1)
SalesOrder=\'ISO1932017\' And LineNo=\'17\' and BomLevel Like \'0.%\' And Completed= \'C\'

每次运行均出现如下错误:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
Incorrect syntax near the keyword \'LineNo\'.

我仔细检查应该没有语句错误呀, 我删除目录 "bin" 后重新启动,仍然报错, 我用同样条件直接进行加载, 使用正常, 但主要写入SQLcompute 中就有问题, 能否请老师帮我看一下!


--  作者:有点蓝
--  发布时间:2024/5/5 20:37:00
--  
LineNo是什么类型的列?整数?

试试
Q_Ps = DataTables("WOReleaseSchedule").SQLCompute("Count(SalesOrder)", FL1)

--  作者:creastzh
--  发布时间:2024/5/8 5:42:00
--  
LineNo是字符型字段,(下图)

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

我更换了 Q_Ps = DataTables("WOReleaseSchedule").SQLCompute("Count(SalesOrder)", FL1) 语句执行, 仍然报错

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
Incorrect syntax near the keyword \'LineNo\'.

语句执行用Output.show(FL1),类似结果:

ISO19530|27     BL:0     FL:SalesOrder=\'ISO19530\' And LineNo=\'27\' and BomLevel Like \'0%\' And Completed= \'C\'

百思不得其解!




--  作者:有点蓝
--  发布时间:2024/5/8 8:30:00
--  
WOReleaseSchedule是一个查询表?
--  作者:creastzh
--  发布时间:2024/5/8 11:55:00
--  
WOReleaseSchedule 是实际存在的数据表,不是查询表
--  作者:有点蓝
--  发布时间:2024/5/8 11:58:00
--  
如果是SqlServer,跟踪一下后台数据库,看看执行了什么sql
--  作者:creastzh
--  发布时间:2024/5/9 5:19:00
--  
我在程序中仔细排查没有发现问题, 在表结构中也没有发现异常, 然后试着在SQL Server Management Studio 检查其字段信息时发现 LineNo 前后有方括号存在, 我不知道是如何产生的, 试图删除方括号却发现无效,删除后又自动添加了:

图片点击可在新窗口打开查看
--  作者:creastzh
--  发布时间:2024/5/9 6:29:00
--  
终于发现这个字段名是系统保留的名称, 我修改了这个名称即可, 但没有想到接下来所有与此有关的程序都需要一样修改((# ̄~ ̄#)

只是我好奇,系统为什么不能有所提示? 

问题算基本解决了

--  作者:有点蓝
--  发布时间:2024/5/9 8:37:00
--  
不要改列名的,在查询条件里也加上中括号即可

FL1 = "SalesOrder=\'" & SOLine & "\' And [LineNo] =\'" & LineNo1 & "\' and BomLevel

--  作者:creastzh
--  发布时间:2024/5/11 17:40:00
--  
好的, 后续我就可以这样做了,谢谢!