当前位置: 代码迷 >> PB >> pb sql 查询条件(急),该怎么处理
  详细解决方案

pb sql 查询条件(急),该怎么处理

热度:78   发布时间:2016-04-29 09:54:04.0
pb sql 查询条件(急)
dw_1.settransobject(sqlca)

is_msql=dw_1.getsqlselect()


if cbx_2.checked = true then
ld_start=uo_1.uf_get_date()
ld_end=uo_2.uf_get_date()
ls_start = string(ld_start,'yyyy-mm-dd')+" 00:00:00"
ls_end = string(ld_end,'yyyy-mm-dd')+" 23:59:59"
   
if ld_start>ld_end then
  messagebox("错误","日期顺序不对(起始日期在结束日期后)...")
  return
end if
---------------------------------------------------------------------
其他的查询条件都好了,就时间的查询条件一直没搞好,用的ORACLE数据库
ls_cond+=" and auto_print_tem.sssq_q <= "+ls_start+" and auto_print_tem.sssq_z >= "+ls_end
----------------------------------------------------------------------
end if

if ddlb_1.text<>'' or isnull(ddlb_1.text) then
ls_cond+=" and auto_print_tem.sz = '"+ddlb_1.text+"'"
end if


ls_cond=f_addcondition_sql(is_msql,ls_cond)------组合函数
dw_1.setsqlselect(ls_cond)
dw_1.retrieve()

------解决方案--------------------
1,在setsqlselect() 前,messagebox('', ls_cond) 看看你拼接的SQL 是否正确。
2,检测一下 dw_1.setsqlselect() 的反回值。


------解决方案--------------------
日期先 tochar()为字符串,再判断
------解决方案--------------------
ls_cond+=" and auto_print_tem.sssq_q <= "+ls_start+" and auto_print_tem.sssq_z >= "+ls_end
的正确写法如下:
SQL code
ls_cond+=" and auto_print_tem.sssq_q <= to_date('"+ls_start+"','YYYY-MM-DD HH24:MI:SS') and auto_print_tem.sssq_z >= to_date('"+ls_end + "', 'YYYY-MM-DD HH24:MI:SS')"-- 注意,如果日期字符串的符式不是YYYY-MM-DD HH24:MI:SS,需要修改这部分代码
------解决方案--------------------
在PB的SQL 里可以使用DB 函数。

------解决方案--------------------
where auto_print_tem.sssq_q <= 2011-08-24 00:00:00 and auto_print_tem.sssq_z >= 2011-08-24 23:59:59

时间上加引号.

------解决方案--------------------
where auto_print_tem.sssq_q <= '2011-08-24 00:00:00' and auto_print_tem.sssq_z >= '2011-08-24 23:59:59'
  相关解决方案