Procedure getName:
/* The array aTabeller consists of "Tabelname,Key Col,Col name:[Col. name]:..."
ARRAYSIZE is number of elements in the array.
-------------------------------------------------------------------------------- */
&scoped-define ARRAYSIZE 9
def output param pNavn as char no-undo.
def input param pType as char no-undo.
def input param pKey as integer no-undo.
def var hBuf as handle no-undo.
def var hQry as handle no-undo.
def var hFelt as handle no-undo.
def var TabelNr as integer no-undo.
def var Udtryk as char no-undo.
def var Kolonner as char no-undo.
def var KolIdx as integer no-undo.
def var cDelimiter as char no-undo.
def var aTabeller as char extent {&ARRAYSIZE} initial
[ "selskab,selskabsnr,forkortelse:navn":U,
"vej,vejnr,vejnavn:bynavn":U,
"institution,institutionsnr,navn":U,
"postdistrikt,integer(postnr),bynavn":U,
"grund_omraade,grund_omraadenr,navn":U,
"person,personnr,fornavn:efternavn":U,
"kunde,kundenr,navn":U,
"skema,skemanr,skema_navn":U,
"skema_tur,skema_turnr,tur_navn":U
].
/* Contains delimitrers to insert between columns
The array must contain as many row as aTabeller
---------------------------------------------------------------------- */
def var aDelimiter as char extent {&ARRAYSIZE} initial
[ ":":U,
",":U,
"":U,
"":U,
"":U,
" ":U,
"":U,
"":U,
"":U
].
do TabelNr = 1 to {&ARRAYSIZE}:
if entry( 1, aTabeller[TabelNr] ) = pType then
leave.
end.
/* Is the array excausted
*/
if TabelNr > {&ARRAYSIZE} then do:
pNavn = "UKENDT TYPE":U.
return.
end.
create buffer hBuf for table entry( 1, aTabeller[TabelNr] ).
create query hQry.
Udtryk = substitute( "for each &1 no-lock where &2 = &3":U,
entry( 1, aTabeller[TabelNr] ),
entry( 2, aTabeller[TabelNr] ),
string( pKey ) ).
hQry:set-buffers( hBuf ).
hQry:query-prepare( Udtryk ).
hQry:query-open.
hQry:get-first.
if hQry:num-results = 0 then do:
pNavn = "FINDES IKKE":U.
return.
end.
/* Find the names of columns and the delimiter to but between.
------------------------------------------------------------- */
Kolonner = entry( 3, aTabeller[TabelNr] ).
cDelimiter = aDelimiter[TabelNr].
do KolIdx = 1 to num-entries( Kolonner, ':':U ):
hFelt = hBuf:buffer-field( entry( KolIdx, Kolonner, ':':U ) ).
if pNavn = "":U then
pNavn = hFelt:buffer-value.
else
pNavn = pNavn + cDelimiter + hFelt:buffer-value.
end.
hQry:query-close.
delete object hBuf.
delete object hQry.
end procedure.