求教高手:在PB数据窗口grid中复杂SQL的解决问题

hemny 2010-12-13 03:36:11
有个视图vw_js_zymxb 含有多个列
要实现以下条件的查询(带有v_的为查询条件,如果窗口没有输入,这不需要这个条件)
 select * from vw_js_zymxb
where fwwdbh = v_fwwdbh
and xzlb00 = v_xzlb00
and jslx00 = v_jslx00
and djlsh0= v_ djlsh0
and cardno = v_cardno
and id0000 = v_id0000
and qshdbz <> '1'
and ((jsny00 is not null
and jsny00 = v_jsny00)
or
(jsny00 is null
and sfrq00 between v_ksrq and v_jsrq
and qshdbz <> '1')
)

把查询出来的记录用表格表格显示,另外第一列为复选框作为选择使用,其中还有一列使用下拉框(用dropdowndw或者dropdownlistbox实现皆可)
这种查询怎么实现啊?

由于条件复杂,想用动态数据窗口的,但是动态数据窗口中复选框和下拉框不知道怎么实现?

请高手指教怎么弄
...全文
141 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemny 2010-12-13
  • 打赏
  • 举报
回复
谢谢两位解答,我先去试试
xuam 2010-12-13
  • 打赏
  • 举报
回复
日期参数你如果没输就取个范围很大值就行了啊!比如'1900-01-01' and '2050-01-01'
不是说用like 就都用
[Quote=引用 7 楼 hemny 的回复:]
引用 4 楼 hemny 的回复:
但是那些参数有些没有输入的时候,就不用那个条件的啊

比如说只输入v_fwwdbh一个条件的时候

查询的结果就是
select * from vw_js_zymxb
where fwwdbh = v_fwwdbh

参数可以吗??


谢谢高手解答
这个方法对于前面的条件可以,但是后面的这个条件呢?
and ((jsny00 is ……
[/Quote]
zb63668331 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hemny 的回复:]
1、动态窗口怎么加入复选框和下拉框呢?
2、做个通用的查询窗口,怎么添加下面这个条件呢?
3、用like又怎么实现上面这个条件呢?
[/Quote]
回答你的问题,
1、动态窗口的一种方法就是通过SQLCA.SyntaxFromSQL(ls_sql, 'Style(Type=Grid)', ls_error)去创建,至于你的条件你只需要修改ls_sql 就可以了,不需要什么复选框;下拉框可以用DW.modify("列名.Edit.Style='')去修改...
2、如果你做过通用查询应该就不会问这个问题了,可以通过字段、操作符、值、连接符进行操作的
3、没仔细看,like可能牵强了点,但也不是不可能,如果你的字段什么都是固定的话,写个存储过程可以解决的。。

hemny 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zb63668331 的回复:]
引用 4 楼 hemny 的回复:
但是那些参数有些没有输入的时候,就不用那个条件的啊

比如说只输入v_fwwdbh一个条件的时候

查询的结果就是
select * from vw_js_zymxb
where fwwdbh = v_fwwdbh

参数可以吗??

1、 用动态数据窗口
2、直接做个GRID数据窗口,然后做个通用的查询窗口(建议用这种方法)
3、SQ……
[/Quote]

请问一下‘zb63668331’
1、动态窗口怎么加入复选框和下拉框呢?
2、做个通用的查询窗口,怎么添加下面这个条件呢?
and ( (jsny00 is not null
and jsny00 = v_jsny00)
or
(jsny00 is null
and sfrq00 between v_ksrq and v_jsrq
and qshdbz <> '1')
)

3、用like又怎么实现上面这个条件呢?
hemny 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hemny 的回复:]
但是那些参数有些没有输入的时候,就不用那个条件的啊

比如说只输入v_fwwdbh一个条件的时候

查询的结果就是
select * from vw_js_zymxb
where fwwdbh = v_fwwdbh

参数可以吗??
[/Quote]

谢谢高手解答
这个方法对于前面的条件可以,但是后面的这个条件呢?
and ((jsny00 is not null
and jsny00 = v_jsny00)
or
(jsny00 is null
and sfrq00 between v_ksrq and v_jsrq
and qshdbz <> '1')
)

括号里面的“sfrq00 between v_ksrq and v_jsrq”条件似乎不能用like吧
zb63668331 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hemny 的回复:]
但是那些参数有些没有输入的时候,就不用那个条件的啊

比如说只输入v_fwwdbh一个条件的时候

查询的结果就是
select * from vw_js_zymxb
where fwwdbh = v_fwwdbh

参数可以吗??
[/Quote]
1、 用动态数据窗口
2、直接做个GRID数据窗口,然后做个通用的查询窗口(建议用这种方法)
3、SQL解决的话,用LIKE 吧
xuam 2010-12-13
  • 打赏
  • 举报
回复
没条件就用 like '%'
String v_fwwdbh
v_fwwdbh = ......
if isnull(v_fwwdbh ) or v_fwwdbh ='' then
v_fwwdbh ='%'

select * from vw_js_zymxb
where fwwdbh like v_fwwdbh

dw_1.settransobject(sqlca)
dw_1.retrieve(v_fwwdbh)
hemny 2010-12-13
  • 打赏
  • 举报
回复
但是那些参数有些没有输入的时候,就不用那个条件的啊

比如说只输入v_fwwdbh一个条件的时候

查询的结果就是
select * from vw_js_zymxb
where fwwdbh = v_fwwdbh

参数可以吗??
xuam 2010-12-13
  • 打赏
  • 举报
回复
跟用pb几没关系啊!
[Quote=引用 2 楼 hemny 的回复:]
我用的是PB8
[/Quote]
hemny 2010-12-13
  • 打赏
  • 举报
回复
我用的是PB8
xuam 2010-12-13
  • 打赏
  • 举报
回复
把条件作为参数,直接做个GRID风格的DW就OK 啊

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧