f_addwhere.srf 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. $PBExportHeader$f_addwhere.srf
  2. $PBExportComments$为数据窗口添加WHERE子句--函数
  3. global type f_addwhere from function_object
  4. end type
  5. forward prototypes
  6. global function integer f_addwhere (datawindow f_dw, string f_where)
  7. end prototypes
  8. global function integer f_addwhere (datawindow f_dw, string f_where);string ls_old,ls_new,ls_old1,ls_old2
  9. int li_pos,li_pos2
  10. if f_where='1=1' then return 1
  11. f_where='('+f_where+')'
  12. ls_old=trim(f_dw.describe("DataWindow.Table.Select"))
  13. ls_old=f_replace(ls_old,'~n',' ')//
  14. li_pos=pos(lower(ls_old),' order by')
  15. li_pos2=pos(lower(ls_old),' group by')
  16. if li_pos2>0 then li_pos=min(li_pos,li_pos2)
  17. if li_pos>0 then
  18. ls_old1=left(ls_old,li_pos -1)
  19. ls_old2=mid(ls_old,li_pos)
  20. else
  21. ls_old1=ls_old
  22. end if
  23. li_pos=pos(lower(ls_old1),' where ')
  24. if li_pos>0 then
  25. ls_old1=left(ls_old1,li_pos -1)+' where ('+right(ls_old1,len(ls_old1) - li_pos -6)
  26. ls_new=ls_old1+") and "+f_where+ls_old2
  27. else
  28. ls_new=ls_old1+" where "+f_where+ls_old2
  29. end if
  30. if f_dw.Modify('DataWindow.Table.Select="'+ls_new+'"')>'' then
  31. return 0
  32. else
  33. return 1
  34. end if
  35. end function