Export the fields value from a table to a string

sharkdim

Member
i want to export the fields value from a table ,to a string ,such as ,
i have a table like
table :tt_mstr
fields: tt_site as character format "x(10)"
tt_line as integer format ">>9"
tt_item as character format "x(25)"
value tt_site = "10001" ;tt_line = 1 ; tt_item = "ABCD1234".

the record value of tt_mstr export to a string type

define variable bbb as character.
the bbb value is ' "10001", 1,"ABCD1234" '

i know the way through export to file and import to unformat characters with temp file,
but ,i want to know whether there is another way to achieve...

many thanks
 

jongpau

Member
Easy, but I am not sure how efficient it is.

Code:
DEFINE VARIABLE tableValues AS CHARACTER NO-UNDO.
 
DEFINE TEMP-TABLE tt_mstr NO-UNDO
      FIELD tt_site AS CHARACTER format "x(10)"
      FIELD tt_line AS INTEGER  format ">>9"
      FIELD tt_item AS CHARACTER format "x(25)".
 
CREATE tt_mstr.
ASSIGN tt_mstr.tt_site = "10001"
      tt_mstr.tt_line = 1
      tt_mstr.tt_item = "ABCD1234".
 
 
/* I assume you want to do it for every record */
FOR EACH tt_mstr:
 
    RUN makeString(OUTPUT tableValues).
 
    MESSAGE tableValues VIEW-AS ALERT-BOX.
 
END.
 
PROCEDURE makeString:
    DEFINE OUTPUT PARAMETER pString AS CHARACTER NO-UNDO.
 
    DEFINE VARIABLE iFields AS INTEGER  NO-UNDO.
    DEFINE VARIABLE hField  AS HANDLE    NO-UNDO.
    DEFINE VARIABLE sQuote  AS CHARACTER NO-UNDO.
 
    IF NOT AVAILABLE tt_mstr THEN RETURN.
 
    DO iFields = 1 TO BUFFER tt_mstr:NUM-FIELDS:
 
        ASSIGN hField  = BUFFER tt_mstr:BUFFER-FIELD(iFields)
              sQuote  = IF hField:DATA-TYPE BEGINS "CH" THEN '"' ELSE ""
              pSTring = pString
                      + (IF iFields EQ 1 THEN "":U ELSE ",")
                      + sQuote
                      + TRIM(hField:STRING-VALUE())
                      + sQuote.
 
    END.
 
END PROCEDURE.
 

sharkdim

Member
thanks a lot ,it's a good way to solve the problem,
thank you very much

Easy, but I am not sure how efficient it is.

Code:
DEFINE VARIABLE tableValues AS CHARACTER NO-UNDO.
 
DEFINE TEMP-TABLE tt_mstr NO-UNDO
      FIELD tt_site AS CHARACTER format "x(10)"
      FIELD tt_line AS INTEGER  format ">>9"
      FIELD tt_item AS CHARACTER format "x(25)".
 
CREATE tt_mstr.
ASSIGN tt_mstr.tt_site = "10001"
      tt_mstr.tt_line = 1
      tt_mstr.tt_item = "ABCD1234".
 
 
/* I assume you want to do it for every record */
FOR EACH tt_mstr:
 
    RUN makeString(OUTPUT tableValues).
 
    MESSAGE tableValues VIEW-AS ALERT-BOX.
 
END.
 
PROCEDURE makeString:
    DEFINE OUTPUT PARAMETER pString AS CHARACTER NO-UNDO.
 
    DEFINE VARIABLE iFields AS INTEGER  NO-UNDO.
    DEFINE VARIABLE hField  AS HANDLE    NO-UNDO.
    DEFINE VARIABLE sQuote  AS CHARACTER NO-UNDO.
 
    IF NOT AVAILABLE tt_mstr THEN RETURN.
 
    DO iFields = 1 TO BUFFER tt_mstr:NUM-FIELDS:
 
        ASSIGN hField  = BUFFER tt_mstr:BUFFER-FIELD(iFields)
              sQuote  = IF hField:DATA-TYPE BEGINS "CH" THEN '"' ELSE ""
              pSTring = pString
                      + (IF iFields EQ 1 THEN "":U ELSE ",")
                      + sQuote
                      + TRIM(hField:STRING-VALUE())
                      + sQuote.
 
    END.
 
END PROCEDURE.
 
Top