一个很简单的程序,可是一直出错,有空来看看(代码很简单,但是报无效sql语句)

funnu 2003-10-16 11:56:11
做了一个dw,两张表一共选了5列,页面上有搜索按钮,代码如下
int n ,i
string zch,qymc
string dwrq,nbxh

string dqsj
dqsj=string(GDT_SYSTIME,'yyyy-mm-dd')//GDT_SYSTIME为全局变量,取系统时间

ls_sql=ls_sql+' where 1=1 '
if sle_zch.text<>'' then
ls_sql=ls_sql+" and zch like '%"+trim(sle_zch.text)+"%'"
end if
if sle_qymc.text<>'' then
ls_sql=ls_sql+" AND qymc like '%"+trim(sle_qymc.text)+"%'"
end if


ls_sql=ls_sql+' and qy_qydj_zs.nbxh=qy_wzczqk_zs.nbxh'
ls_sql=ls_sql+' and qy_wzczqk_zs.zfyj <> qy_wzczqk_zs.zfsj'
ls_sql=ls_sql+' and qy_wzczqk_zs.wfyj <> qy_wzczqk_zs.wfsj'

ls_sql=ls_sql+" and to_char(qy_wzczqk_zs.qxycz,'yyyy-mm-dd') >='"+dqsj+"'"


tab_1.tabpage_1.dw_1.setsqlselect(ls_sql)
tab_1.tabpage_1.dw_1.Retrieve()
代码很简单,但是报无效sql语句,但该语句在数据库的环境下能够执行。总是得不到我想要的结果,那位老手帮我看看
...全文
50 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2003-10-16
  • 打赏
  • 举报
回复
跟踪一下,你最终的ls_sql结果是什么?
guangli_zhang 2003-10-16
  • 打赏
  • 举报
回复
将这一句
ls_sql=ls_sql+" and to_char(qy_wzczqk_zs.qxycz,'yyyy-mm-dd') >='"+dqsj+"'"
改为ls_sql=ls_sql+" and qy_wzczqk_zs.qxycz >='"+dqsj+"'"
试试
wantsong 2003-10-16
  • 打赏
  • 举报
回复
同意楼上的
最后Retrieve()完要把oldsql写回去
hkzhou 2003-10-16
  • 打赏
  • 举报
回复
楼主 你直接把ls_sql的内容导出来看看 先不要执行

tab_1.tabpage_1.dw_1.setsqlselect(ls_sql)
tab_1.tabpage_1.dw_1.Retrieve()
直接输出 ls_sql,然后在放到数据库的环境下执行 看看

double22822 2003-10-16
  • 打赏
  • 举报
回复
text 的值不是“”,还要 not isnull(),你应该取出sql语句看一看.
纳米茶 2003-10-16
  • 打赏
  • 举报
回复
ls_sql=ls_sql+" and qy_wzczqk_zs.qxycz >= to_date('"+dqsj+"','YYYY-MM-DD')"
试试看
guangli_zhang 2003-10-16
  • 打赏
  • 举报
回复
全局变量取出来了吗?
freeliu 2003-10-16
  • 打赏
  • 举报
回复
你把like的部分用括号扩起来试试。
flyhot 2003-10-16
  • 打赏
  • 举报
回复
把你的ls_sql付给一个变量,,然后using setransobject(sqlca)
检索变量,,,,
funnu 2003-10-16
  • 打赏
  • 举报
回复
这个贴子我先结了,我在重开新贴,把问题说情
flyerlxg 2003-10-16
  • 打赏
  • 举报
回复
ls_sql最初的值是多少,其内是否有where?如果有的话,再加where那不是重复了?
ropriest 2003-10-16
  • 打赏
  • 举报
回复
ls_sql只是一个字符串,所以:
ls_sql=ls_sql+" and zch like '%"+trim(sle_zch.text)+"%'"
应该改为:
ls_sql=ls_sql+" and zch like %" + trim(sle_zch.text) + "%"
如果sle_zch.text中不是字符串,还需要String转化一下。
其他几句也是同样的道理。
funnu 2003-10-16
  • 打赏
  • 举报
回复
不是,两个表都有的只有nbxh
qiyousyc 2003-10-16
  • 打赏
  • 举报
回复
是不是zch 在2个表中都有
funnu 2003-10-16
  • 打赏
  • 举报
回复
着急呀
funnu 2003-10-16
  • 打赏
  • 举报
回复
where 1=1 and zch like '%111%' and qy_qydj_zs.nbxh=qy_wzczqk_zs.nbxh and qy_wzczqk_zs.zfyj <> qy_wzczqk_zs.zfsj and qy_wzczqk_zs.wfyj <> qy_wzczqk_zs.wfsj and to_char(qy_wzczqk_zs.qxycz,'yyyy-mm-dd') >='2003-10-16'
这个是最后的结果,补充完整的代码可以在数据库的环境下查询出结果。我想知道是不是因为数据窗口用了两个表的缘故
pengdesheng 2003-10-16
  • 打赏
  • 举报
回复
messagebox('',ls_sql)
workhand 2003-10-16
  • 打赏
  • 举报
回复
看ls_sql是什么,是不是有该有空格的地方没有加上

1,075

社区成员

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

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