Focal Point
Using Modify - how do I update a field in a focus database from a multi-vaule amper v

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/5657033906

September 05, 2011, 06:15 PM
MMcDonald
Using Modify - how do I update a field in a focus database from a multi-vaule amper v
I have an html form that has a multiple value listbox. I want to take the values that are past from the listbox amper variable and include the vaules in a focus database.
I am using the following fields from the Emplyee Table:
EMP_ID
FIRST_NAME
LAST_NAME
SKILL_DESC...when I match on emp_id update first & last name then next segment match on skill_desc (there maybe upto 14 skills. How can I accomplish this since it pass the values from the listbox with 'OR' between each value.
Thanks for your help.


8.0.9, Windows
excel / pdf
September 05, 2011, 06:24 PM
Waz
I think there are two ways to do this.

1. Break the multi values into records, and then update each one, at the DM level.

2. In the MODIFY create a loop that breaks up the multi values and updates each one.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

September 05, 2011, 08:01 PM
MMcDonald
Thanks Waz
I'll try it tomorrow


8.0.9, Windows
excel / pdf
September 06, 2011, 10:05 AM
MMcDonald
Waz
do you have any DM example you can send?
I was able to etake this string :
'Value1' OR 'Value2' OR 'Value3' OR 'Value4' OR 'Value
and change it to:
'Value1','Value2','Value3','Value4','Value5'
no really sure what's the next best approach on how to connect these 5 records to one user name and then hold in a file and execute my modify command.
Thanks


8.0.9, Windows
excel / pdf
September 06, 2011, 12:34 PM
MMcDonald
this is what I came up with, which works fine...is there a better method or is this ok?

-DEFAULT &EMP_ID='11318'
-DEFAULT &LAST_NAME='MMCDONALD'
-DEFAULT &FIRST_NAME='MATT'
-DEFAULT &DEPARTMENT='IS'
-DEFAULT &EMAIL='MMCDONALD@MEDLINE.COM'
-DEFAULT &SKILLS1='''V001'''
-DEFAULT &MEMBERSHIPS='WEBFOCUS'
-RUN
-SET &XFMT='A' | &SKILLS1.LENGTH;
-SET &VARA=STRREP(&SKILLS1.LENGTH,&SKILLS1.QUOTEDSTRING,&SKILLS1.LENGTH,''' OR ''',4,' OR ',&SKILLS1.LENGTH,'&XFMT');
-SET &VARRLEN = ARGLEN(&VARA.LENGTH,&VARA,'I5');
-SET &VARALEN = &VARRLEN - 2;
-SET &VARALEN1 = &VARRLEN - 1;
-SET &VARAFMT = 'A' || &VARALEN.EVAL;
-SET &VARB=SUBSTR(&VARA.LENGTH,&VARA,2,&VARALEN1,&VARALEN,'&VARAFMT');
-SET &VARC=STRREP(&VARB.LENGTH,&VARB.QUOTEDSTRING,2,'''',4,'''''',&VARB.LENGTH,'&XFMT');
-SET &ZXSDOC='''' || STRREP(&VARC.LENGTH,&VARC.QUOTEDSTRING,4,' OR ',5,''',''',&VARC.LENGTH,'&XFMT') || '''';
-SET &XDOC1=EDIT(&ZXSDOC,'$$$$$9999');
-SET &XDOC2=EDIT(&ZXSDOC,'$$$$$$$$$$$$9999');
-SET &XDOC3=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC4=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC5=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC6=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC7=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC8=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC9=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC10=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC11=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC12=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC13=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &XDOC14=EDIT(&ZXSDOC,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9999');
-SET &SKILLCODE='('
- | '''' || &XDOC1 || '''' | ','
- | '''' || &XDOC2 || '''' | ','
- | '''' || &XDOC3 || '''' | ','
- | '''' || &XDOC4 || '''' | ','
- | '''' || &XDOC5 || '''' | ','
- | '''' || &XDOC6 || '''' | ','
- | '''' || &XDOC7 || '''' | ','
- | '''' || &XDOC8 || '''' | ','
- | '''' || &XDOC9 || '''' | ','
- | '''' || &XDOC10 || '''' | ','
- | '''' || &XDOC11 || '''' | ','
- | '''' || &XDOC12 || '''' | ','
- | '''' || &XDOC13 || '''' | ','
- | '''' || &XDOC14 || ''''
- | ');' ;
-RUN
SET ASNAMES=ON
TABLE FILE MENTORSKILLS
SUM SKILLS1 NOPRINT
BY MENTYPE
BY SKILLS1
BY SKILL_DESC1
WHERE MENTYPE EQ 'MENTOR';
WHERE SKILLS1 IN &SKILLCODE
ON TABLE HOLD AS 'HOLDSKILLS'
END
-RUN
DEFINE FILE MEDLINEMENTOR
XMENTYPE/A10='MENTOR';
XEMP_ID/A9='&EMP_ID';
XFIRST_NAME/A15='&FIRST_NAME';
XLAST_NAME/A15='&LAST_NAME';
XDEPARTMENT/A10='&DEPARTMENT';
XEMAIL/A60='&EMAIL';
XMEMBERSHIPS/A40='&MEMBERSHIPS';
END
TABLE FILE MEDLINEMENTOR
SUM MENTYPE NOPRINT
XLAST_NAME AS 'LAST_NAME'
XFIRST_NAME AS 'FIRST_NAME'
XDEPARTMENT AS 'DEPARTMENT'
XEMAIL AS 'EMAIL'
XMEMBERSHIPS AS 'MEMBERSHIPS'
BY XMENTYPE AS 'MENTYPE'
BY XEMP_ID AS 'EMP_ID'
IF RECORDLIMIT EQ 1;
WHERE MENTYPE EQ 'MENTOR';
ON TABLE HOLD AS 'HOLDMENTOR'
END
-RUN
MATCH FILE HOLDSKILLS
PRINT
SKILLS1
SKILL_DESC1
BY MENTYPE
RUN
FILE HOLDMENTOR
SUM
EMP_ID
LAST_NAME
FIRST_NAME
DEPARTMENT
EMAIL
MEMBERSHIPS
BY MENTYPE
AFTER MATCH HOLD AS 'HOLDPROF' OLD-OR-NEW
END
-RUN
MODIFY FILE MEDLINEMENTOR
LOG DBMSERR MSG OFF
LOG DUPL MSG OFF
LOG INVALID MSG OFF
LOG NOMATCH MSG OFF
LOG FORMAT MSG OFF
LOG ACCEPT MSG OFF
LOG TRANS MSG OFF
FIXFORM FROM HOLDPROF
MATCH MENTYPE EMP_ID
ON NOMATCH INCLUDE
ON MATCH UPDATE LAST_NAME FIRST_NAME DEPARTMENT EMAIL
ON MATCH CONTINUE
MATCH SKILLS1
ON NOMATCH INCLUDE
ON MATCH UPDATE SKILL_DESC1
ON MATCH CONTINUE
MATCH MEMBERSHIPS
ON NOMATCH INCLUDE
ON MATCH REJECT
DATA ON HOLDPROF
END
-RUN
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE " "
-TYPE
-TYPE " Update Submitted for - Employee ID: &EMP_ID"
-RUN
-EXIT


8.0.9, Windows
excel / pdf
September 06, 2011, 06:03 PM
Waz
This will split an amper variable up.

-SET &VARA   = '''Value1'' OR ''Value2'' OR ''Value3'' OR ''Value4'' OR ''Value''' ;
-SET &VART   = STRREP(&VARA.LENGTH,&VARA,4,' OR ',5,',',&VARA.LENGTH,'A&VARA.LENGTH') ;
-SET &ZXSDOC = STRIP(&VART.LENGTH,&VART,'''','A&VART.LENGTH') ;
-SET &ZXSDOC = TRUNCATE(&ZXSDOC) ;

-TYPE &ZXSDOC

-SET &TOKEN = 1 ;
-SET &TOKSTR= GETTOK(&ZXSDOC,&ZXSDOC.LENGTH,&TOKEN,',',&ZXSDOC.LENGTH,'A&ZXSDOC.LENGTH') ;
-REPEAT SPLIT_VAR WHILE &TOKSTR NE ' ' ;
-SET &TOKSTR = TRUNCATE(&TOKSTR) ;
-TYPE Token # &TOKEN = &TOKSTR

-SET &TOKEN = &TOKEN + 1 ;
-SET &TOKSTR= GETTOK(&ZXSDOC,&ZXSDOC.LENGTH,&TOKEN,',',&ZXSDOC.LENGTH,'A&ZXSDOC.LENGTH') ;

-SPLIT_VAR


But, I think you want this, assuming I got VARA correct:

-SET &VARA   = '''Value1'' OR ''Value2'' OR ''Value3'' OR ''Value4'' OR ''Value''' ;
-SET &ZXSDOC = '(' || STRREP(&VARA.LENGTH,&VARA,4,' OR ',5,',',&VARA.LENGTH,'A&VARA.LENGTH') || ')' ;
-SET &ZXSDOC = TRUNCATE(&ZXSDOC) ;

-TYPE &VARA
-TYPE &ZXSDOC



Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

September 07, 2011, 09:09 AM
MMcDonald
Thanks Waz...I'll give this a try.!


8.0.9, Windows
excel / pdf