f_myretrieve2.srf 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. $PBExportHeader$f_myretrieve2.srf
  2. $PBExportComments$datasotre添加条件后retrieve--函数
  3. global type f_myretrieve2 from function_object
  4. end type
  5. forward prototypes
  6. global function integer f_myretrieve2 (datastore f_ds, string f_where)
  7. end prototypes
  8. global function integer f_myretrieve2 (datastore f_ds, string f_where);string ls_old,ls_new,ls_old1,ls_old2
  9. int li_pos,li_pos2
  10. f_where='('+f_where+')'
  11. ls_old=f_ds.describe("DataWindow.Table.Select")
  12. li_pos=pos(lower(ls_old),' order by')
  13. li_pos2=pos(lower(ls_old),' group by')
  14. if li_pos2>0 then li_pos=min(li_pos,li_pos2)
  15. if li_pos>0 then
  16. ls_old1=left(ls_old,li_pos)
  17. ls_old2=right(ls_old,len(ls_old) - li_pos+1)
  18. else
  19. ls_old1=ls_old
  20. end if
  21. li_pos=pos(lower(ls_old1),' where ')
  22. if li_pos>0 then
  23. ls_old1=left(ls_old1,li_pos -1)+' where ('+right(ls_old1,len(ls_old1) - li_pos -6)
  24. ls_new=ls_old1+") and "+f_where+ls_old2
  25. else
  26. ls_new=ls_old1+" where "+f_where+ls_old2
  27. end if
  28. if f_ds.Modify('DataWindow.Table.Select="'+ls_new+'"')='' then
  29. f_ds.retrieve()
  30. f_ds.Modify('DataWindow.Table.Select="'+ls_old+'"')
  31. return 1
  32. else
  33. f_ds.Modify('DataWindow.Table.Select="'+ls_old+'"')
  34. return 0
  35. end if
  36. end function