brwexportexcel.i 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. DEF VAR hBuffer AS HANDLE NO-UNDO.
  2. DEF VAR hQuery AS HANDLE NO-UNDO.
  3. DEF VAR cName AS CHAR NO-UNDO.
  4. DEF VAR cWhere AS CHAR NO-UNDO.
  5. DEF VAR cLabel AS CHAR NO-UNDO.
  6. DEF VAR cString AS CHAR NO-UNDO.
  7. DEF VAR ij AS INT NO-UNDO.
  8. DEF VAR iRet AS INT NO-UNDO.
  9. DEF VAR cDelim AS CHAR NO-UNDO INIT '£'.
  10. /*
  11. DO WITH FRAME {&FRAME-NAME}:
  12. APPLY 'CTRL-END' TO BROWSE {&BROWSE-NAME}.
  13. hBuffer = DYNAMIC-FUNCTION('getQueryBuffer':U IN hDaten) NO-ERROR.
  14. IF NOT VALID-HANDLE ( hBuffer ) THEN RETURN.
  15. cName = SESSION:TEMP-DIR
  16. + ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.')
  17. + '.csv'.
  18. cWhere = DYNAMIC-FUNCTION('getQueryWhere':U IN hDaten) NO-ERROR.
  19. CREATE QUERY hQuery.
  20. hQuery:SET-BUFFERS(hBuffer).
  21. hQuery:QUERY-PREPARE('FOR EACH rowObject NO-LOCK').
  22. hQuery:QUERY-OPEN().
  23. OUTPUT TO VALUE(cName).
  24. SESSION:SET-WAIT-STATE('GENERAL').
  25. cString = ''.
  26. DO ij = 1 TO hBuffer:NUM-FIELDS:
  27. IF hBuffer:BUFFER-FIELD(ij):NAME BEGINS 'row' THEN NEXT.
  28. cLabel = hBuffer:BUFFER-FIELD(ij):LABEL.
  29. IF cLabel = ? OR
  30. cLabel = '' THEN cLabel = hBuffer:BUFFER-FIELD(ij):NAME.
  31. cString = cString + cDelim + cLabel.
  32. END.
  33. IF cString <> '' THEN cString = SUBSTRING(cString,02).
  34. cString = REPLACE(cString, ';', ':').
  35. cString = REPLACE(cString, cDelim, ';').
  36. PUT CONTROL cString CHR(10).
  37. hQuery:GET-FIRST(NO-LOCK).
  38. DO WHILE NOT hQuery:QUERY-OFF-END:
  39. cString = ''.
  40. DO ij = 1 TO hBuffer:NUM-FIELDS:
  41. IF hBuffer:BUFFER-FIELD(ij):NAME BEGINS 'row' THEN NEXT.
  42. cLabel = hBuffer:BUFFER-FIELD(ij):BUFFER-VALUE(0).
  43. IF cLabel = ? THEN cLabel = ''.
  44. IF hBuffer:BUFFER-FIELD(ij):DATA-TYPE BEGINS 'CHAR' THEN DO:
  45. cLabel = REPLACE(cLabel, CHR(10), ' ').
  46. END.
  47. cString = cString + cDelim + cLabel.
  48. END.
  49. IF cString <> '' THEN cString = SUBSTRING(cString,02).
  50. cString = REPLACE(cString, ';', ':').
  51. cString = REPLACE(cString, cDelim, ';').
  52. PUT CONTROL cString CHR(10).
  53. hQuery:GET-NEXT(NO-LOCK).
  54. END.
  55. OUTPUT CLOSE.
  56. hQuery:QUERY-CLOSE().
  57. DELETE OBJECT hQuery.
  58. SESSION:SET-WAIT-STATE('').
  59. END.
  60. RUN ShellExecuteA ( INPUT 0,
  61. INPUT 'open',
  62. INPUT 'Excel.exe',
  63. INPUT cName,
  64. INPUT '',
  65. INPUT 1,
  66. OUTPUT iRet ).
  67. */
  68. RUN exportData IN hDaten ( 'Excel', '', FALSE, TRUE, 10000 ).