DEF VAR hBuffer AS HANDLE NO-UNDO. DEF VAR hQuery AS HANDLE NO-UNDO. DEF VAR cName AS CHAR NO-UNDO. DEF VAR cWhere AS CHAR NO-UNDO. DEF VAR cLabel AS CHAR NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR ij AS INT NO-UNDO. DEF VAR iRet AS INT NO-UNDO. DEF VAR cDelim AS CHAR NO-UNDO INIT '£'. DO WITH FRAME {&FRAME-NAME}: hQuery = {&BROWSE-NAME}:QUERY. hBuffer = hQuery:GET-BUFFER-HANDLE(1). IF NOT VALID-HANDLE ( hBuffer ) THEN RETURN. cName = SESSION:TEMP-DIR + ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.') + '.csv'. cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK', hBuffer:NAME ) NO-ERROR. hQuery:QUERY-PREPARE(cWhere). hQuery:QUERY-OPEN(). OUTPUT TO VALUE(cName). SESSION:SET-WAIT-STATE('GENERAL'). cString = ''. DO ij = 1 TO hBuffer:NUM-FIELDS: IF hBuffer:BUFFER-FIELD(ij):NAME BEGINS 'row' THEN NEXT. FIND FIRST tBrowser NO-LOCK WHERE tBrowser.Feld = hBuffer:BUFFER-FIELD(ij):NAME AND tBrowser.fVisible = TRUE NO-ERROR. IF NOT AVAILABLE tBrowser THEN NEXT. cLabel = hBuffer:BUFFER-FIELD(ij):LABEL. IF cLabel = ? OR cLabel = '' THEN cLabel = hBuffer:BUFFER-FIELD(ij):NAME. cString = cString + cDelim + cLabel. END. IF cString <> '' THEN cString = SUBSTRING(cString,02). cString = REPLACE(cString, ';', ':'). cString = REPLACE(cString, cDelim, ';'). PUT CONTROL cString CHR(10). hQuery:GET-FIRST(NO-LOCK). DO WHILE NOT hQuery:QUERY-OFF-END: cString = ''. DO ij = 1 TO hBuffer:NUM-FIELDS: IF hBuffer:BUFFER-FIELD(ij):NAME BEGINS 'row' THEN NEXT. FIND FIRST tBrowser NO-LOCK WHERE tBrowser.Feld = hBuffer:BUFFER-FIELD(ij):NAME AND tBrowser.fVisible = TRUE NO-ERROR. IF NOT AVAILABLE tBrowser THEN NEXT. cLabel = hBuffer:BUFFER-FIELD(ij):BUFFER-VALUE(0). IF cLabel = ? THEN cLabel = ''. IF hBuffer:BUFFER-FIELD(ij):DATA-TYPE BEGINS 'CHAR' THEN DO: cLabel = REPLACE(cLabel, CHR(10), ' '). END. cString = cString + cDelim + cLabel. END. IF cString <> '' THEN cString = SUBSTRING(cString,02). cString = REPLACE(cString, ';', ':'). cString = REPLACE(cString, cDelim, ';'). PUT CONTROL cString CHR(10). hQuery:GET-NEXT(NO-LOCK). END. OUTPUT CLOSE. hQuery:QUERY-CLOSE(). hQuery:QUERY-OPEN(). SESSION:SET-WAIT-STATE(''). END. RUN ShellExecuteA ( INPUT 0, INPUT 'open', INPUT 'Excel.exe', INPUT cName, INPUT '', INPUT 1, OUTPUT iRet ).