QTP Update question.....

Mike Palandri palandri@eug4ja.lane.edu
Tue, 23 Jan 2001 08:46:14 -0800


Hi Mike, 


QTP doesn't like you to update an output record after it has already been
written.  This is what is happens when a second record for the same
policy is read.


One approach would be to change your code so that you are processing all
the subfile records for a single policy at once, and updating the policy
record one time.  You would sort the record complex on policy number,
save the VINs in temp items using a counter, and output POLICY-MASTER at
POLICY-NO.  


Something like this, which is off the top of my head and untested, but
should be close.  This example does not account for any rabbiting of the
record complex because of the linkage to
<fontfamily><param>r_ansi</param><smaller>RENEW-POL-MASTER</smaller></fontfamily>.


<fontfamily><param>r_ansi</param><smaller>SET DICT FROMDDC               
                                   </smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>REQ VINUPDT INPUT LIMIT 100000 
                                             &</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>            ON CALCULATION
ERRORS REPORT                                    
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>            ON EDIT ERRORS
REPORT</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>SET LOCK FILE
UPDATE</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>ACC *FROMPOLF LINK TO
POLICY-MASTER LINK TO RENEW-POL-MASTER OPT</smaller></fontfamily> 



SORT ON POLICY-NO


TEMP TC-VIN1 CHAR*20

TEMP TC-VIN2 CHAR*20

TEMP TC-VIN3 CHAR*20

TEMP TC-VIN4 CHAR*20

TEMP TC-VIN5 CHAR*20

TEMP TC-VIN6 CHAR*20

TEMP TI-CNT INT*2


ITEM TI-CNT = TI-CNT + 1 RESET AT POLICY-NO

ITEM TC-VIN1 = VIN IF TI-CNT = 1 RESET AT POLICY-NO

ITEM TC-VIN2 = VIN IF TI-CNT = 2 RESET AT POLICY-NO

ITEM TC-VIN3 = VIN IF TI-CNT = 3 RESET AT POLICY-NO

ITEM TC-VIN4 = VIN IF TI-CNT = 4 RESET AT POLICY-NO

ITEM TC-VIN5 = VIN IF TI-CNT = 5 RESET AT POLICY-NO

ITEM TC-VIN6 = VIN IF TI-CNT = 6 RESET AT POLICY-NO



<fontfamily><param>r_ansi</param><smaller>OUT POLICY-MASTER UPD AT
POLICY-NO &

ON ERRORS REPORT</smaller></fontfamily>
<fontfamily><param>r_ansi</param><smaller>&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(1)
FINAL TC-VIN1     IF P-VEH-VIN-NUMBER(1) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(1)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(2)
FINAL TC-VIN2    IF P-VEH-VIN-NUMBER(2) = VINTO &

	AND TI-CNT > 1 &

	ELSE &</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(2)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(3)
FINAL TC-VIN3     IF P-VEH-VIN-NUMBER(3) = VINTO &

	AND TI-CNT > 2 &

	ELSE &</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(3)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(4)
FINAL TC-VIN4     IF P-VEH-VIN-NUMBER(4) = VINTO &

	ELSE &</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>	AND TI-CNT > 3 &

       P-VEH-VIN-NUMBER(4)

</smaller></fontfamily>[ETC...]




At 09:46 AM 01/23/2001 -0500, Lafferty, Mike wrote: 

>>>>

<excerpt>

<fontfamily><param>Arial</param><smaller>Good morning
all,</smaller></fontfamily> 

<fontfamily><param>Arial</param><smaller>     I had posted a QUICK
SELECTBOX question about 3 weeks ago, on which I am still working and
making great strides, thanks to everyone's wonderful assistance....I'll
let you know how that one turns out, when I get back to it (you all know
about 'shifting gears' in the software world)....meaning I've been taken
off that to work on something else more pressing.....

</smaller></fontfamily>

<fontfamily><param>Arial</param><smaller>In the meantime, I have turned
my attention to some QTP updates....The situation is this....It's an
automobile insurance application....I link the POLICY-NO from the subfile
to the POLICY-NO of the POLICY-MASTER dataset and update the appropriate
VIN numbers (up to OCCURS 6) for that policy....while doing this, I
encountered the error message "Record has been changed since you last
found it"....This occurs when I have more than one vehicle per
policy....Each subfile record contains a POLICY-NO, a VIN and a VINTO to
do a compare....I listed some example data from the subfile below....I
have tried several alternatives including OUTPUT AT FINAL and OUTPUT AT
POLICY-NO and also some DEFINES for the array values thinking QTP was not
evaluating them properly, all to no avail.....Maybe my approach to the
problem is a little lopsided....

</smaller></fontfamily>

<fontfamily><param>Arial</param><smaller>We're running PH version 6.09D
on a HP3000 979-100.....</smaller></fontfamily> 


<fontfamily><param>Arial</param><smaller>I think I need some help !
(tongue-in-cheek)......</smaller></fontfamily> 



<fontfamily><param>r_ansi</param><smaller>SET DICT FROMDDC               
                                   </smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>REQ VINUPDT INPUT LIMIT 100000 
                                             &</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>            ON CALCULATION
ERRORS REPORT                                    
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>            ON EDIT ERRORS
REPORT</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>SET LOCK FILE
UPDATE</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>ACC *FROMPOLF LINK TO
POLICY-MASTER LINK TO RENEW-POL-MASTER OPT</smaller></fontfamily> 


<fontfamily><param>r_ansi</param><smaller>OUT POLICY-MASTER UPD ON ERRORS
REPORT</smaller></fontfamily>
<fontfamily><param>r_ansi</param><smaller>&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(1)
FINAL VIN     IF P-VEH-VIN-NUMBER(1) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(1)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(2)
FINAL VIN     IF P-VEH-VIN-NUMBER(2) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(2)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(3)
FINAL VIN     IF P-VEH-VIN-NUMBER(3) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(3)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(4)
FINAL VIN     IF P-VEH-VIN-NUMBER(4) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(4)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(5)
FINAL VIN     IF P-VEH-VIN-NUMBER(5) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(5)</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>  ITEM P-VEH-VIN-NUMBER(6)
FINAL VIN     IF P-VEH-VIN-NUMBER(6) = VINTO ELSE
&</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>      
P-VEH-VIN-NUMBER(6)</smaller></fontfamily> 




<fontfamily><param>r_ansi</param><smaller>POLICY-NO  VIN               
VINTO</smaller></fontfamily> 


<fontfamily><param>r_ansi</param><smaller>    1000173   
1B3BE46KXHC289815  1B3BBE46KYXH89815</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1000377   
1P3XP24D9NN190832  1P3X924D9NN190832</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1000576   
1G2AF54T9L6202569  1G2AF54T926202569</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1000695   
1P3BP36D1HF143256  1P3PB36D1HF143236</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1001335   
2FTJW36L5ECA90915  2FTJW365ELA90915</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1001437   
1GBFG15R6T1020579  1GBFG15R6T1020597</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>   </smaller></fontfamily>
<fontfamily><param>r_ansi</param><smaller>1001618    1B3BE46D2FC201855  1B3BE462DFC201855</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>   </smaller></fontfamily> <fontfamily><param>r_ansi</param><smaller>1001618    1G1BN53E0NR118754  1G1BN530NR118754</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1002565    1C3BF66P4HX793597  1C38F66P4HX793597</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1004476    1G3HY54C8L1807541  IG3HY54C8L1807541</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1004654    1C3CJ51K1JG366618  1C3CJ51K1JG36661B</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1004693    SAJHX6247WC815550  SAJHK6247WC815550</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1004969    1FTHF25Y3GKA72854  1FTHF25Y36KA72854</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005177    1B3XA46K3PF543136  183XA46K3PF543136</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005335    WDBCB20A8DB049998  WDBCB20A8D049998</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005522    1FALP52U3SA273426  1FLAP52U3SA273426</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005527    1B7GN14M1HS423074  1876N14M1H5423074</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005635    1G1ND52J5Y6273384  161ND52J5Y6273384</smaller></fontfamily> 

<fontfamily><param>r_ansi</param><smaller>    1005772    1B3EJ46X9VN656093  AB3EJ46X9VN656093</smaller></fontfamily> 


</excerpt><<<<<<<<






Mike