找回密码
 立即注册

QQ登录

只需一步,快速开始

星海末

初级会员

20

主题

75

帖子

221

积分

初级会员

积分
221
星海末
初级会员   /  发表于:2023-12-21 08:47  /   查看:2997  /  回复:8
5金币
本帖最后由 星海末 于 2023-12-21 08:49 编辑


使用的是 Firebird 2.5 的odbc dsn 平常查询sql语句可以,
image.png556572570.png
动态语句如下条件语句如下


where 1=1   and  f.orderdate BETWEEN @开始时间  and  @结束时间  and f.ordertype in (@订单类型)    {IIF(@订单号 = "", "", "f.orderformno= '" + @订单号 + "'")}
GROUP BY .....

在文本表达式里面可以解析 到 但是要用{}起来,这个是不支持查询是么,mssql都可以
然后想问下,这个报错,有输出数据库解析完的执行语句么,在哪里可以查看,方便知道问题

最佳答案

查看完整内容

我看您现在的sql是这个: SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w where 1=1 {IIF(@报表参数1 = "", "", "w.ORDERFORMNO= '" + @报表参数1 + "'")} 是不是应该给后面的条件加一个and SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w where 1=1 {IIF(@报表参数1 = "", "", "and w.ORDERFORMNO= '" + @报表参数1 + "'")} 两个条件并列的时候加and并列呢

8 个回复

倒序浏览
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2023-12-21 08:47:45
来自 7#
我看您现在的sql是这个:

SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w
where 1=1
{IIF(@报表参数1 = "", "", "w.ORDERFORMNO= '" + @报表参数1 + "'")}


是不是应该给后面的条件加一个and
SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w
where 1=1
{IIF(@报表参数1 = "", "", "and w.ORDERFORMNO= '" + @报表参数1 + "'")}


两个条件并列的时候加and并列呢
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-12-21 12:16:27
2#
问题描述:ODBC连接数据源时的sql查询。


问题解决:
您好,想查看具体的SQL语句,可以调整系统的日志级别,然后在l系统日志里面查看,您可以参考下面的帖子:

【报表-表达式】查看报表执行的sql语句
https://gcdn.grapecity.com.cn/showtopic-152217-1-1.html
(出处: 葡萄城开发者社区)



不过根据您的描述来看,您的sql是没问题的,您是给参数加上 {} 之后正常,不加就报错。这个现象是正常的,
加了大括号{}  之后,会将{}中的参数解析成具体的参数值,如果不加,会认为是普通的文本内容,sql就不正确了。您可以看看。
回复 使用道具 举报
星海末
初级会员   /  发表于:2023-12-21 14:18:13
3#
Eden.Sun 发表于 2023-12-21 12:16
问题描述:ODBC连接数据源时的sql查询。

版主,日志调试看了了也不行 QQ截图20231221141749.jpg
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-12-21 14:52:52
4#
星海末 发表于 2023-12-21 14:18
版主,日志调试看了了也不行

从您的报错来看,您这个还是sql语句的问题,您参考一下下面的教程,
https://www.grapecity.com.cn/sol ... t-and-skills/demo18
回复 使用道具 举报
星海末
初级会员   /  发表于:2023-12-22 11:50:10
5#
Eden.Sun 发表于 2023-12-21 14:52
从您的报错来看,您这个还是sql语句的问题,您参考一下下面的教程,
https://www.grapecity.com.cn/solu ...

还是不行,我的sql语句如下
SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w
where 1=1
{IIF(@报表参数1 = "", "", "w.ORDERFORMNO= '" + @报表参数1 + "'")}
回复 使用道具 举报
星海末
初级会员   /  发表于:2023-12-22 11:51:10
6#
星海末 发表于 2023-12-22 11:50
还是不行,我的sql语句如下
SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w
where 1=1

image.png676848144.png
image.png609293212.png
回复 使用道具 举报
星海末
初级会员   /  发表于:2023-12-22 16:43:20
8#
本帖最后由 星海末 于 2023-12-22 16:45 编辑
Felix.Li 发表于 2023-12-22 15:08
我看您现在的sql是这个:

SELECT w.ORDERDATE,w.ORDERFORMNO FROM orderform w

发现问题了,有些地方要有空格 1=1 也是必须的,我在试一试其他的
select  w.ORDERDATE,w.ORDERFORMNO FROM orderform  w where 1=1 {IIF(@报表参数1 = "", "", " and w.ORDERFORMNO= '" & @报表参数1 & "'")}
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-12-22 18:44:04
9#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部