datawindow的getsqlselect()動態改變查詢條件!!

kirao 2004-07-20 02:54:36
問題如下:
...全文
225 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kirao 2004-07-23
  • 打赏
  • 举报
回复
自己有一個還算可以的解決辦法了,謝謝大家!!!!

klbt 2004-07-22
  • 打赏
  • 举报
回复
你可以建立一个带有子查询的dw,edit souce语法,注意retrieve部分order by /group by的位置。
treesoft 2004-07-22
  • 打赏
  • 举报
回复
参考一下PFC的sqlspy,应该会有答案,而且这种事情只能自己去写代码找,必竟有据可依,如group by 和order by这些个关键字是不会变的。

:)
amekoxiao 2004-07-22
  • 打赏
  • 举报
回复
看来楼主的要求很高了
很难帮你
sfox1 2004-07-22
  • 打赏
  • 举报
回复
学习中!!不敢乱说~~:)
kirao 2004-07-22
  • 打赏
  • 举报
回复
Thank mittee(最后一条大白鲨)!!!!!!

這個和我以前的想法差不多,但是還是沒有太大的適應性的
如果datawindowobject有order by 有group by怎麼辦
還有如果有子查詢怎麼辦,因為子查詢中也會可能有where
group by !!!!




am2000 2004-07-22
  • 打赏
  • 举报
回复
麻烦!
mittee 2004-07-21
  • 打赏
  • 举报
回复
我有一个函数你可以修改增强它的适应性:
//========================================
//根据检索条件,数据窗口进行检索
//f_query
//in: string ls_newsql,datawindow ldw_in
//
//wuhai
//20040101
//=====================================

string ls_oldsql
string ls_f
string ls_temp_1
long ll_p
ls_f = ls_newsql
ls_oldsql=ldw_in.object.datawindow.table.select
ls_temp_1=lower(trim(ls_oldsql))
if pos(ls_temp_1,"where")=0 then ls_newsql =""+ "where "+"" + ls_newsql
if pos(ls_temp_1,"where")>0 then
ls_newsql=ls_oldsql+""+" and "+""+ls_newsql
else
ls_newsql=ls_oldsql+ls_newsql
end if
if lower(ls_f) = 'nowhere' then
ll_p = pos(lower(ls_newsql),'where')
if ll_p > 0 then
ls_newsql = left(ls_newsql,ll_p - 1)
end if
end if
if ls_newsql<>'' then
ldw_in.object.datawindow.table.select=ls_newsql
setpointer(hourglass!) //沙漏形状
if lower(ls_f) = 'nowhere' then
ldw_in.retrieve('nowhere')
else
ldw_in.retrieve()
end if

setpointer(arrow!)
ldw_in.object.datawindow.table.select=ls_oldsql
end if

return ldw_in.rowcount()
kirao 2004-07-21
  • 打赏
  • 举报
回复
當然是不可預知的了,如果是固定的那會很容易把條件接上去的
並且我寫的是通用的東西,可以適應大部分的datawindowobject
只要傳條件string就會幫你接到主查詢的後面。

請大家都來幫忙!!!!



Hanson_bati_zhu 2004-07-20
  • 打赏
  • 举报
回复
你的这个DW是固定的一个DW,还是不可预知的某个DW?
如果是不可预知的,就只能用GetSqlSelect的办法
如果是固定的或可预知的,就可以事先记录一下SELECT部分的语句内容了
kirao 2004-07-20
  • 打赏
  • 举报
回复
現在的問題就是怎麼拼湊新sql的問題

  用getsqlselect()得到datawindow語法
  把條件加進去
  setsqlselect()就可,但是加條件你要找到加入position就是難點了
如果是簡單sql會很容易,但如果是有子查詢的就不好寫了!
Hanson_bati_zhu 2004-07-20
  • 打赏
  • 举报
回复
简单的办法是,在程序中事先记住SELECT部分的SQL脚本内容
然后再利用后面的语句一起拼接成新SQL

Jonea 2004-07-20
  • 打赏
  • 举报
回复
加入/*1*/之类的注释进行处理
kirao 2004-07-20
  • 打赏
  • 举报
回复
調用datawindow的getsqlselect()後,想根據界面戶的操作
動態地加相應的條件到查詢的where條件下,不過查詢可能有
子查詢語句,在欄位裡or是條件裡面,現在的問題是我怎麼
找出主查詢where的位置讓我加的條件加入到查詢語句裡。

 
我怎樣才能把我的查詢條件接在後面,注意子查詢也可能有
group by 語句 簡單的查詢可以搞定用pos() mid()就可,但如有子查詢,就不知道
要加在那個where後,or是那個group by 前面了,我是寫通用的功能所以適應所有
查詢的sql(sql server 2000下)

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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