f_find_emp.srf 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. $PBExportHeader$f_find_emp.srf
  2. global type f_find_emp from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_emp (string arg_empcode, ref s_empinfo arg_s_emp)
  6. end prototypes
  7. global function integer f_find_emp (string arg_empcode, ref s_empinfo arg_s_emp);Int rslt = 1
  8. Long cnt = 0
  9. String ls_empcode,ls_empname,ls_find_code
  10. String ls_cardcode,ls_sex
  11. Long ll_empid,ll_deptid,ll_jobid
  12. Boolean if_find = FALSE
  13. IF Trim(arg_empcode) = '' THEN
  14. rslt = 0
  15. GOTO ext
  16. END IF
  17. SELECT u_rs_empinfo.empid,
  18. u_rs_empinfo.empname,
  19. u_rs_empinfo.empcode,
  20. u_rs_empinfo.cardcode,
  21. u_rs_empinfo.sex,
  22. u_rs_empinfo.deptid,
  23. u_rs_empinfo.jobid
  24. INTO :ll_empid,
  25. :ls_empname,
  26. :ls_empcode,
  27. :ls_cardcode,
  28. :ls_sex,
  29. :ll_deptid,
  30. :ll_jobid
  31. FROM u_rs_empinfo
  32. Where ( empcode = :arg_empcode OR empname = :arg_empcode );
  33. IF sqlca.SQLCode <> 0 THEN
  34. IF Pos(Trim(arg_empcode),'%') = 0 THEN
  35. ls_find_code = '%'+ Trim(arg_empcode) + '%'
  36. ELSE
  37. ls_find_code = Trim(arg_empcode)
  38. END IF
  39. SELECT count(*) INTO :cnt
  40. FROM u_rs_empinfo
  41. Where ( empcode Like :ls_find_code OR empname Like :ls_find_code );
  42. IF sqlca.SQLCode <> 0 THEN
  43. rslt = 0
  44. GOTO ext
  45. END IF
  46. IF cnt <> 1 THEN
  47. rslt = 0
  48. GOTO ext
  49. ELSE
  50. SELECT u_rs_empinfo.empid,
  51. u_rs_empinfo.empcode,
  52. u_rs_empinfo.empname,
  53. u_rs_empinfo.cardcode,
  54. u_rs_empinfo.sex,
  55. u_rs_empinfo.deptid,
  56. u_rs_empinfo.jobid
  57. INTO :ll_empid,
  58. :ls_empcode,
  59. :ls_empname,
  60. :ls_cardcode,
  61. :ls_sex,
  62. :ll_deptid,
  63. :ll_jobid
  64. FROM u_rs_empinfo
  65. Where ( empcode Like :ls_find_code OR empname Like :ls_find_code );
  66. IF sqlca.SQLCode <> 0 THEN
  67. rslt = 0
  68. GOTO ext
  69. ELSE
  70. if_find = TRUE
  71. END IF
  72. END IF
  73. ELSE
  74. if_find = TRUE
  75. END IF
  76. IF if_find THEN
  77. arg_s_emp.empid = ll_empid
  78. arg_s_emp.empcode = ls_empcode
  79. arg_s_emp.empname = ls_empname
  80. arg_s_emp.cardcode = ls_cardcode
  81. arg_s_emp.cardcode = ls_sex
  82. arg_s_emp.deptid = ll_deptid
  83. arg_s_emp.jobid = ll_jobid
  84. END IF
  85. ext:
  86. RETURN rslt
  87. end function