f_kjls_getfj.srf 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. $PBExportHeader$f_kjls_getfj.srf
  2. global type f_kjls_getfj from function_object
  3. end type
  4. forward prototypes
  5. global function string f_kjls_getfj (long arg_pkid)
  6. end prototypes
  7. global function string f_kjls_getfj (long arg_pkid);Long arr_fileid[], ll_fileid, i = 0, row
  8. String arr_filename[], arr_filetype[], ls_filename, ls_filetype, Pathname
  9. Blob ls_filedata
  10. String errmsg
  11. String ls_guid
  12. SELECT top 1 newid()
  13. INTO :ls_guid
  14. From u_user;
  15. IF sqlca.SQLCode <> 0 THEN
  16. RETURN ''
  17. END IF
  18. DECLARE cur1 CURSOR FOR
  19. SELECT fileid, DisplayName,FileType
  20. FROM u_file
  21. WHERE billtype = 1466
  22. AND relid = :arg_pkid
  23. AND (filetype = 'bmp' OR filetype = 'rle' OR filetype = 'wmf'
  24. OR filetype = 'tif' OR filetype = 'jpg' OR filetype = 'gif' OR filetype = 'jpeg')
  25. Using sys_fileDB_sqlca;
  26. OPEN cur1;
  27. FETCH cur1 Into :ll_fileid, :ls_filename, :ls_filetype;
  28. DO WHILE sys_fileDB_sqlca.SQLCode = 0
  29. i++
  30. arr_fileid[i] = ll_fileid
  31. arr_filename[i] = ls_filename
  32. arr_filetype[i] = ls_filetype
  33. FETCH cur1 Into :ll_fileid, :ls_filename, :ls_filetype;
  34. LOOP
  35. CLOSE cur1;
  36. Long printid = 0
  37. FOR i = 1 To UpperBound(arr_fileid)
  38. Pathname = sys_cur_path+ins_fjtemppath+'\' + String(arr_fileid[i])+ '_' + arr_filename[i]+'.'+arr_filetype[i]
  39. IF Trim(Pathname) <> '' THEN
  40. IF Not FileExists ( Pathname ) THEN
  41. SetNull(ls_filedata)
  42. SelectBlob filedata
  43. Into:ls_filedata
  44. From u_file
  45. Where fileid = :arr_fileid[i] Using sys_fileDB_sqlca;
  46. IF sys_fileDB_sqlca.SQLCode = 0 THEN
  47. IF f_saveblobtofile(ls_filedata,Pathname,errmsg) <> 0 THEN
  48. // DONE: 插入记录
  49. printid++
  50. INSERT Into u_print_files(guid, printid, Pathname) Values(:ls_guid, :printid, :Pathname);
  51. IF sqlca.SQLCode <> 0 THEN
  52. ROLLBACK;
  53. RETURN ''
  54. END IF
  55. END IF
  56. END IF
  57. ELSE
  58. printid++
  59. INSERT Into u_print_files(guid, printid, Pathname) Values(:ls_guid, :printid, :Pathname);
  60. IF sqlca.SQLCode <> 0 THEN
  61. ROLLBACK;
  62. RETURN ''
  63. END IF
  64. END IF
  65. END IF
  66. NEXT
  67. COMMIT;
  68. RETURN ls_guid
  69. end function