选择一个采购单号,点击查找记录按钮,在查询栏进行这样的查询:
查询语句如下:
SELECT DISTINCT请购表.品名,请购表.合同号,请购表.采购单号,订货到货表.到货数量,
FROM请购表 LEFT JOIN 订货到货表 ON (请购表.合同号 =订货到货表.合同编号)
WHERE (((请购表.采购单号)=[forms]![查询窗口]![采购单号]));
问题是:
如果我不在下拉框中选择任何采购单号,而是直接点击查找记录,我想显示所有采购单号的信息,请问SQL语句该怎么写?
高手来帮忙解决啊,查询语句最好写全一点,我怕自己写的会出错~
如果为空 sql里就不拼where部分
如果不为空 就拼上where部分
这样就可以了
SQL = “SELECT DISTINCT请购表.品名,请购表.合同号,请购表.采购单号,订货到货表.到货数量,
FROM请购表 LEFT JOIN 订货到货表 ON (请购表.合同号 =订货到货表.合同编号)
WHERE 1=1”
在后面加个判断,如果下拉框非空,再加上
SQL = SQL + “ AND (((请购表.采购单号)=[forms]![查询窗口]![采购单号]))”追问
where 1 = 1
if ([forms]![查询窗口]![采购单号] !="")
SQL = SQL + “ AND (((请购表.采购单号)=[forms]![查询窗口]![采购单号]))”
请问是这个意思吗?
如果没有对下拉框进行选择,那么下拉框的内容就空的,这时候的条件是1=1,这是恒成立的,所以就会查出所有结果。加上1=1是为了防止判断条件为空的情况,就是没有选择下拉列表中的内容。
追问我明白你的意思,但是按照这个写法,保存时候提示有错误,是我If 语句写的不对吗?
sql就是查询的语句,if的判定是在你的代码中写的,不是在sql语句里写的
追问我已经有点晕了,你能帮我写出来代码么?这样说来说去我也写不好, 干脆帮我写好算了,我追加分
追答你是用什么语言写的啊。。。。我不确定你用的语言我一定知道,我也许可以试试
追问我就是在ACCESS里面写的啊。
把语句改成"
SELECT DISTINCT请购表.品名,请购表.合同号,请购表.采购单号,订货到货表.到货数量,
FROM请购表 LEFT JOIN 订货到货表 ON (请购表.合同号 =订货到货表.合同编号)
WHERE ((请购表.采购单号)='%[forms]![查询窗口]![采购单号]%')"
这样试一下
这样右边不选的话是空的,'%%'会匹配所有的结果
Private Sub Command5_Click()
If ( [forms]![查询窗口]![采购单号] = " ")
Then SQL = “SELECT * FROM 请购表 LEFT JOIN 订货到货表 ON 请购表.合同号 =订货到货表.合同编号";
DoCmd.OpenQuery(“SQL”);
Else DoCmd.OpenQuery ("采购单号") End Sub
判断的时候等于不是用“==”的么,“=”是赋值吧,虽然我不清楚你的语言的语法,不过这个应该都是一样的吧?还有我不知道你的Then是不是管理到Else才结束,如果是只管理下一句语句的话,那你可以把"SQL = ..."放到if之前执行,这样就是如果为空执行SQL,不为空,执行采购单号
本回答被网友采纳查询 值 来自 表格名字 where 后面跟条件