Consultor Eletrônico



Kbase P103029: ADM2. How to export the content of a SmartDataBrowsers to a CSV file
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/13/2009
Status: Unverified

GOAL:

How to export the content of a SmartDataBrowsers to a CSV file

GOAL:

How to export the content of a SmartDataObject query to a CSV file

FACT(s) (Environment):

Windows
Progress 9.x
OpenEdge 10.x

FIX:

This code has to be inserted in the container in which is contained the SDO. Note that the SDB only displays the records that the SDO supplies, so in the code below is not needed and never referenced.
DEFINE VARIABLE hSDO AS HANDLE NO-UNDO.
hSDO = h_dsportCustomer. /*Change this with the name of your SDO handle variable*/
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE initialRowid AS CHAR NO-UNDO.
DEFINE VARIABLE hBuffer AS ROWID NO-UNDO.
DEFINE VARIABLE myrowid AS ROWID NO-UNDO.
DEFINE VARIABLE vhColHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE vcColList AS CHARACTER NO-UNDO.
DEFINE VARIABLE vcColName AS CHARACTER NO-UNDO.
DEFINE VARIABLE viCounter AS INTEGER NO-UNDO.
DEFINE VARIABLE viNumCols AS INTEGER NO-UNDO.
DEFINE VARIABLE lInitialized AS LOGICAL NO-UNDO.
DEFINE VARIABLE cRow AS CHARACTER INITIAL "" NO-UNDO.
DEFINE VARIABLE lAvailable AS LOGICAL INITIAL YES NO-UNDO.
DEFINE VARIABLE iRowsToBatch AS INTEGER NO-UNDO.
hQuery = DYNAMIC-FUNCTION('getQueryHandle':U IN hSDO).
IF NOT hQuery:IS-OPEN THEN
MESSAGE "Query not open"
VIEW-AS ALERT-BOX INFO BUTTONS OK.
ELSE DO:
OUTPUT TO c:\myfile.csv.
/*saving info to restore after*/
initialRowid = DYNAMIC-FUNCTION('getRowIdent':U IN hSDO) NO-ERROR.
lInitialized = DYNAMIC-FUNCTION('getobjectinitialized':U IN hSDO) NO-ERROR.
iRowsToBatch = DYNAMIC-FUNCTION('getrowsToBatch':U IN hSDO) NO-ERROR.
{get objectinitialized lInitialized hSDO}.
{set objectinitialized NO hSDO}.
/* set rows to batch very high as we will read all the data */
{get rowsToBatch iRowsToBatch hSDO}.
{set rowsToBatch 5000 hSDO}.
RUN fetchFirst IN hSDO.
/* Loop while records are available */
DO WHILE lAvailable:
vcColList = DYNAMIC-FUNCTION('getDataColumns':U IN hSDO).
viNumCols = NUM-ENTRIES(vcColList).
cRow = ''.
DO viCounter = 1 TO viNumCols:
ASSIGN
vcColName = ENTRY(viCounter,vcColList)
vhColHdl = DYNAMIC-FUNCTION('columnHandle':U IN hSDO, INPUT vcColName)
cRow = IF cRow = "" THEN vhColHdl:BUFFER-VALUE ELSE cRow + ',' + vhColHdl:BUFFER-VALUE.
END. /* DO viCounter */
PUT UNFORMATTED cRow SKIP.
lAvailable = NOT CAN-DO("LastRecord,OnlyRecord":U, DYNAMIC-FUNCTION('getQueryPosition':U IN Hsdo)).
RUN fetchNext IN hSDO.
END. /* DO WHILE lAvailable */
/* Restore saved information */
DYNAMIC-FUNCTION('fetchRowIdent' IN hSDO, initialRowid, '':U) NO-ERROR.
{set objectinitialized lInitialized hSDO}.
{set rowsToBatch iRowsToBatch hSDO}.
&n.bsp; OUTPUT CLOSE.
END. /* ELSE DO */.