以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  where条件的字段可否引用变量?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49606)

--  作者:scott518
--  发布时间:2014/4/21 11:27:00
--  where条件的字段可否引用变量?


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

如上图,品质状态列可以下拉选择三种数量:合格数量,不良数量,报废数量

在下面的明细表点击产品编码时弹出一个查询窗口,select语句如下: 

select 产品编码,品名,规格,计量单位,仓库,备注 from 库存表 where “ & tables(“库存调拨单_主表").current("品质状态")  & " > 0

目的就是当主表中选择合格数量时,where条件就自动变为 where 合格数量 > 0

           当主表中选择不良数量时,where条件就自动变为 where 不良数量 > 0 ,以此类推。

 

但会提示“在应使用条件的上下文(在 \'库存调拨单_主表\' 附近)中指定了非布尔类型的表达式。”的错误;

 

上面的写法是不是不正确?还有没有其他写法(只用一条语句,分成三条语句来实现的我会)

 

谢谢!

 

 

 

 


--  作者:Bin
--  发布时间:2014/4/21 11:29:00
--  
上面写法正确啊.

你可以使用messagebox.show 把你拼接的语句弹出来看一下,这样可以直观分析结果. 如果有问题也容易看出问题所在,然后进行调整

--  作者:scott518
--  发布时间:2014/4/21 11:38:00
--  

有检测,就是红色的变量部份不会变动如下:确定后就出现错误提示了。

 

 


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

--  作者:Bin
--  发布时间:2014/4/21 11:43:00
--  
说明你双引号没写对. 完整拼接代码发出来.
--  作者:逛逛
--  发布时间:2014/4/21 11:44:00
--  

你的引号反了吧

 

"select 产品编码,品名,规格,计量单位,仓库,备注 from 库存表 where “ & tables(“库存调拨单_主表").current("品质状态")  & " > 0"


--  作者:scott518
--  发布时间:2014/4/21 11:50:00
--  

select a.产品编码,类别,a.品名,a.规格,a.计量单位,仓库,a.备注 From 库存表 a inner join 产品编码 b on a.产品编码 = b.产品编码 where 仓库 = \'外协品仓\' and " & tables("库存调拨单_主表").Current("品质状态") & " > 0

 

引号还有正反吗,都是小写的英文状态输入的,如果上面的红色部份直接换成 合格数量 显示就没问题。但就想动态变动它。


--  作者:Bin
--  发布时间:2014/4/21 11:52:00
--  
"select a.产品编码,类别,a.品名,a.规格,a.计量单位,仓库,a.备注 From 库存表 a inner join 产品编码 b on a.产品编码 = b.产品编码 where 仓库 = \'外协品仓\' and " & tables("库存调拨单_主表").Current("品质状态") & " > 0"
--  作者:scott518
--  发布时间:2014/4/21 12:03:00
--  

没有看出有什么不同啊,前后两个引号因为我的这个select 语句 是在command中调用的,这里不用


--  作者:有点甜
--  发布时间:2014/4/21 12:04:00
--  
以下是引用scott518在2014-4-21 12:03:00的发言:

没有看出有什么不同啊,前后两个引号因为我的这个select 语句 是在command中调用的,这里不用

 

能用就好,慢慢理解。


--  作者:jspta
--  发布时间:2014/4/21 12:22:00
--  
SQL语法没有这种写法,你用错地方了