f_set_right.srf 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. $PBExportHeader$f_set_right.srf
  2. global type f_set_right from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_set_right ()
  6. end prototypes
  7. global function integer f_set_right ();Long i ,cnt,rslt = 1
  8. Long empid[]
  9. String ls_powerstring[]
  10. Long it_mx
  11. i = 1
  12. String ls_update,ls_update2,ls_update3
  13. ls_update = f_ProfileString (0,'right','update_right', "no")
  14. ls_update2 = f_ProfileString (0,'right','update_right2', "no")
  15. ls_update3 = f_ProfileString (0,'right','update_right3', "no")
  16. IF ls_update = 'no' THEN
  17. DECLARE CUR_INWAERMX CURSOR FOR SELECT u_user.empid,
  18. u_user.rightstring
  19. FROM u_user
  20. Where empid <> 0;
  21. OPEN CUR_INWAERMX;
  22. FETCH CUR_INWAERMX INTO :empid[i],:ls_powerstring[i];
  23. DO WHILE sqlca.SQLCode = 0
  24. i++
  25. FETCH CUR_INWAERMX INTO :empid[i],:ls_powerstring[i];
  26. LOOP
  27. CLOSE CUR_INWAERMX;
  28. it_mx = i - 1
  29. FOR i = 1 TO it_mx
  30. IF Mid(ls_powerstring[i],121,1) = '1' THEN
  31. ls_powerstring[i] = Replace(ls_powerstring[i],1448,1,'1')
  32. ls_powerstring[i] = Replace(ls_powerstring[i],1449,1,'1')
  33. UPDATE u_user
  34. SET u_user.rightstring = :ls_powerstring[i]
  35. Where u_user.empid = :empid[i];
  36. IF sqlca.SQLCode <> 0 THEN
  37. rslt = 0
  38. GOTO ext
  39. END IF
  40. END IF
  41. NEXT
  42. ext:
  43. IF rslt = 0 THEN
  44. ROLLBACK;
  45. ELSE
  46. COMMIT;
  47. f_setProfileString (0,'right','update_right', "yes")
  48. END IF
  49. END IF
  50. IF ls_update2 = 'no' THEN
  51. DECLARE CUR_INWAERMX2 CURSOR FOR
  52. SELECT u_user.empid,
  53. u_user.rightstring
  54. FROM u_user
  55. Where empid <> 0;
  56. OPEN CUR_INWAERMX2;
  57. FETCH CUR_INWAERMX2 INTO :empid[i],:ls_powerstring[i];
  58. DO WHILE sqlca.SQLCode = 0
  59. i++
  60. FETCH CUR_INWAERMX2 INTO :empid[i],:ls_powerstring[i];
  61. LOOP
  62. CLOSE CUR_INWAERMX2;
  63. it_mx = i - 1
  64. FOR i = 1 TO it_mx
  65. IF Mid(ls_powerstring[i],490,1) = '1' THEN
  66. ls_powerstring[i] = Replace(ls_powerstring[i],1451,1,'1')
  67. UPDATE u_user
  68. SET u_user.rightstring = :ls_powerstring[i]
  69. Where u_user.empid = :empid[i];
  70. IF sqlca.SQLCode <> 0 THEN
  71. rslt = 0
  72. GOTO ext2
  73. END IF
  74. END IF
  75. NEXT
  76. ext2:
  77. IF rslt = 0 THEN
  78. ROLLBACK;
  79. ELSE
  80. COMMIT;
  81. f_setProfileString (0,'right','update_right2', "yes")
  82. END IF
  83. END IF
  84. IF ls_update3 = 'no' THEN
  85. DECLARE CUR_INWAERMX3 CURSOR FOR
  86. SELECT u_user.empid,
  87. u_user.rightstring
  88. FROM u_user
  89. Where empid <> 0;
  90. OPEN CUR_INWAERMX3;
  91. FETCH CUR_INWAERMX3 INTO :empid[i],:ls_powerstring[i];
  92. DO WHILE sqlca.SQLCode = 0
  93. i++
  94. FETCH CUR_INWAERMX3 INTO :empid[i],:ls_powerstring[i];
  95. LOOP
  96. CLOSE CUR_INWAERMX3;
  97. it_mx = i - 1
  98. FOR i = 1 TO it_mx
  99. IF Mid(ls_powerstring[i],122,1) = '1' THEN
  100. ls_powerstring[i] = Replace(ls_powerstring[i],1473,1,'1')
  101. UPDATE u_user
  102. SET u_user.rightstring = :ls_powerstring[i]
  103. Where u_user.empid = :empid[i];
  104. IF sqlca.SQLCode <> 0 THEN
  105. rslt = 0
  106. GOTO ext3
  107. END IF
  108. END IF
  109. NEXT
  110. ext3:
  111. IF rslt = 0 THEN
  112. ROLLBACK;
  113. ELSE
  114. COMMIT;
  115. f_setProfileString (0,'right','update_right3', "yes")
  116. END IF
  117. END IF
  118. RETURN rslt
  119. end function