123456789101112131415161718192021222324252627282930313233343536373839 |
- $PBExportHeader$f_addwhere.srf
- $PBExportComments$为数据窗口添加WHERE子句--函数
- global type f_addwhere from function_object
- end type
- forward prototypes
- global function integer f_addwhere (datawindow f_dw, string f_where)
- end prototypes
- global function integer f_addwhere (datawindow f_dw, string f_where);string ls_old,ls_new,ls_old1,ls_old2
- int li_pos,li_pos2
- if f_where='1=1' then return 1
- f_where='('+f_where+')'
- ls_old=trim(f_dw.describe("DataWindow.Table.Select"))
- ls_old=f_replace(ls_old,'~n',' ')//
- li_pos=pos(lower(ls_old),' order by')
- li_pos2=pos(lower(ls_old),' group by')
- if li_pos2>0 then li_pos=min(li_pos,li_pos2)
- if li_pos>0 then
- ls_old1=left(ls_old,li_pos -1)
- ls_old2=mid(ls_old,li_pos)
- else
- ls_old1=ls_old
- end if
- li_pos=pos(lower(ls_old1),' where ')
- if li_pos>0 then
- ls_old1=left(ls_old1,li_pos -1)+' where ('+right(ls_old1,len(ls_old1) - li_pos -6)
- ls_new=ls_old1+") and "+f_where+ls_old2
- else
- ls_new=ls_old1+" where "+f_where+ls_old2
- end if
- if f_dw.Modify('DataWindow.Table.Select="'+ls_new+'"')>'' then
- return 0
- else
- return 1
- end if
- end function
|