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