philippoommen1
Member
Hi,
I am facing the problem while exporting calculated field data from a multi select browser to Excel.
My problem is in the code IF VALID-HANDLE(hField) , when there is a calculated field in the browser , valid-handle become false.
(IF VALID-HANDLE(hField) THEN hField:BUFFER-VALUE ELSE hField:SCREEN-VALUE).
So in the else part I am assigning the screen value. Screen value always get the last selected row's column value. Same value will repeat all over the excel for that particular calculated field. Any suggestions kindly help
The code is below-
DEF VAR hBuffer AS HANDLE NO-UNDO.
DEF VAR hQuery AS HANDLE NO-UNDO.
DEF VAR hField AS HANDLE NO-UNDO.
hQuery = vBrwHandle:QUERY.
hBuffer = hQuery:GET-BUFFER-HANDLE(1).
ASSIGN
i = 1
vCellColumn = 1
vhBrowseCurCol = vBrwHandle:FIRST-COLUMN .
DO j = 1 TO vBrwHandle:NUM-COLUMNS:
IF vhBrowseCurCol:VISIBLE = TRUE THEN
ASSIGN
vWorkSheet:Cells(1,vCellColumn):VALUE = vhBrowseCurCol:LABEL
vCellColumn = vCellColumn + 1.
ASSIGN
vhBrowseCurCol = vhBrowseCurCol:NEXT-COLUMN.
.
END.
DO browserNumber = 1 TO vBrwHandle:NUM-SELECTED-ROWS:
IF vBrwHandle:FETCH-SELECTED-ROW(browserNumber) THEN.
i = i + 1.
ASSIGN
j = 1
vhBrowseCurCol = vBrwHandle:FIRST-COLUMN.
DO-BLK:
DO WHILE VALID-HANDLE(vhBrowseCurCol):
READKEY PAUSE 0.
IF KEYFUNCTION(lastkey) = "END-ERROR" THEN
DO:
vEndError = YES.
LEAVE DO-BLK.
END.
IF vhBrowseCurCol:VISIBLE = TRUE THEN
DO:
hField = hBuffer:BUFFER-FIELD(vhBrowseCurCol:NAME) NO-ERROR.
vWorkSheet:Cells(i ,j):VALUE =
(IF VALID-HANDLE(hField) THEN hField:BUFFER-VALUE ELSE hField:SCREEN-VALUE).
j = j + 1.
END.
vhBrowseCurCol = vhBrowseCurCol:NEXT-COLUMN.
END.
END.
TIA Philip
I am facing the problem while exporting calculated field data from a multi select browser to Excel.
My problem is in the code IF VALID-HANDLE(hField) , when there is a calculated field in the browser , valid-handle become false.
(IF VALID-HANDLE(hField) THEN hField:BUFFER-VALUE ELSE hField:SCREEN-VALUE).
So in the else part I am assigning the screen value. Screen value always get the last selected row's column value. Same value will repeat all over the excel for that particular calculated field. Any suggestions kindly help
The code is below-
DEF VAR hBuffer AS HANDLE NO-UNDO.
DEF VAR hQuery AS HANDLE NO-UNDO.
DEF VAR hField AS HANDLE NO-UNDO.
hQuery = vBrwHandle:QUERY.
hBuffer = hQuery:GET-BUFFER-HANDLE(1).
ASSIGN
i = 1
vCellColumn = 1
vhBrowseCurCol = vBrwHandle:FIRST-COLUMN .
DO j = 1 TO vBrwHandle:NUM-COLUMNS:
IF vhBrowseCurCol:VISIBLE = TRUE THEN
ASSIGN
vWorkSheet:Cells(1,vCellColumn):VALUE = vhBrowseCurCol:LABEL
vCellColumn = vCellColumn + 1.
ASSIGN
vhBrowseCurCol = vhBrowseCurCol:NEXT-COLUMN.
.
END.
DO browserNumber = 1 TO vBrwHandle:NUM-SELECTED-ROWS:
IF vBrwHandle:FETCH-SELECTED-ROW(browserNumber) THEN.
i = i + 1.
ASSIGN
j = 1
vhBrowseCurCol = vBrwHandle:FIRST-COLUMN.
DO-BLK:
DO WHILE VALID-HANDLE(vhBrowseCurCol):
READKEY PAUSE 0.
IF KEYFUNCTION(lastkey) = "END-ERROR" THEN
DO:
vEndError = YES.
LEAVE DO-BLK.
END.
IF vhBrowseCurCol:VISIBLE = TRUE THEN
DO:
hField = hBuffer:BUFFER-FIELD(vhBrowseCurCol:NAME) NO-ERROR.
vWorkSheet:Cells(i ,j):VALUE =
(IF VALID-HANDLE(hField) THEN hField:BUFFER-VALUE ELSE hField:SCREEN-VALUE).
j = j + 1.
END.
vhBrowseCurCol = vhBrowseCurCol:NEXT-COLUMN.
END.
END.
TIA Philip