I can't speak for Vantage 8.03 but have experienced this problem in 6.1. The
rule syntax check in the Configurator works but test rules falls over. I now
try and avoid nested if statements and use (If Then Else) + (If Then Else) +
etc. Even this can cause problems if you have too large a rule. My solution
then is to write a smaller chunk of it to a calculation and then a second
chunk to a second calculation etc and then add the calculations in the final
rule. I have also found that test rules can fall over but the configuration
WILL still compile and run correctly when you approve the configuration. Its
just a pain when you are developing the config as you cannot test anything.
John Walter
Hufcor P/L
-----Original Message-----
From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of
Norman Hutchins
Sent: Tuesday, 14 August 2007 7:06 AM
To: vantage@yahoogroups.com
Subject: [Vantage] Product Configurator rules error 8.03
Hoping someone can help, I've been working with tech support and
have had no luck. I am working on my 3rd configurator and it has
rather large rules for a few parts, after 2 days of working
thought the rules I thought I finally had it solved. However,
when I test the rules I get the following error.
Message: Compilation error in the Rules.
File
'D:\epicor\mfgsys803\Server\pcrules\tstrules\6810pconfig41.p' at
line 2943 column 6. Error 138.
When I check the syntax on the rule it tests out fine. Below is
part of the 6810pconfig41.p file, with line 2943 in bold. Can
anyone shed some light in this for me?
Thanks,
Norman
if avail JobMtl then do:
assign
FieldName = 'QtyPer'
ExprResult = string((If ((Not P01_Logic_CFeed) And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "1")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Input = "4") And
(P01_RdoXfrmOver = "1")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 3) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 4) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "3")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Input = "3") And
(P01_RdoXfrmOver = "1")) Then
((Decimal(P01_cmb_NumbBay)) + 2) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 3) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 4) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(Decimal(P01_cmb_NumbBay)))))))))))))))))))))).
put 'JobMtl.QtyPer: ' at 16 ExprResult format 'x(60)' skip.
end.
[Non-text portions of this message have been removed]
Useful links for the Yahoo!Groups Vantage Board are: ( Note: You must have
already linked your email address to a yahoo id to enable access. )
(1) To access the Files Section of our Yahoo!Group for Report Builder and
Crystal Reports and other 'goodies', please goto:
http://groups.yahoo.com/group/vantage/files/.
(2) To search through old msg's goto:
http://groups.yahoo.com/group/vantage/messages
(3) To view links to Vendors that provide Vantage services goto:
http://groups.yahoo.com/group/vantage/links
Yahoo! Groups Links
rule syntax check in the Configurator works but test rules falls over. I now
try and avoid nested if statements and use (If Then Else) + (If Then Else) +
etc. Even this can cause problems if you have too large a rule. My solution
then is to write a smaller chunk of it to a calculation and then a second
chunk to a second calculation etc and then add the calculations in the final
rule. I have also found that test rules can fall over but the configuration
WILL still compile and run correctly when you approve the configuration. Its
just a pain when you are developing the config as you cannot test anything.
John Walter
Hufcor P/L
-----Original Message-----
From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of
Norman Hutchins
Sent: Tuesday, 14 August 2007 7:06 AM
To: vantage@yahoogroups.com
Subject: [Vantage] Product Configurator rules error 8.03
Hoping someone can help, I've been working with tech support and
have had no luck. I am working on my 3rd configurator and it has
rather large rules for a few parts, after 2 days of working
thought the rules I thought I finally had it solved. However,
when I test the rules I get the following error.
Message: Compilation error in the Rules.
File
'D:\epicor\mfgsys803\Server\pcrules\tstrules\6810pconfig41.p' at
line 2943 column 6. Error 138.
When I check the syntax on the rule it tests out fine. Below is
part of the 6810pconfig41.p file, with line 2943 in bold. Can
anyone shed some light in this for me?
Thanks,
Norman
if avail JobMtl then do:
assign
FieldName = 'QtyPer'
ExprResult = string((If ((Not P01_Logic_CFeed) And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "1")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Input = "4") And
(P01_RdoXfrmOver = "1")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 3) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 4) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "4") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "3")) Then
(Decimal(P01_cmb_NumbBay)) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 1) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((Not P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "3")) Then
((Decimal(P01_cmb_NumbBay)) + 5) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Input = "3") And
(P01_RdoXfrmOver = "1")) Then
((Decimal(P01_cmb_NumbBay)) + 2) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "4") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 3) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "1") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 4) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "2") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(If ((P01_Logic_CFeed) And (P01_Rdo_Tuning = "3") And
(P01_Rdo_Input = "3") And (P01_RdoXfrmOver = "2")) Then
((Decimal(P01_cmb_NumbBay)) + 8) Else
(Decimal(P01_cmb_NumbBay)))))))))))))))))))))).
put 'JobMtl.QtyPer: ' at 16 ExprResult format 'x(60)' skip.
end.
[Non-text portions of this message have been removed]
Useful links for the Yahoo!Groups Vantage Board are: ( Note: You must have
already linked your email address to a yahoo id to enable access. )
(1) To access the Files Section of our Yahoo!Group for Report Builder and
Crystal Reports and other 'goodies', please goto:
http://groups.yahoo.com/group/vantage/files/.
(2) To search through old msg's goto:
http://groups.yahoo.com/group/vantage/messages
(3) To view links to Vendors that provide Vantage services goto:
http://groups.yahoo.com/group/vantage/links
Yahoo! Groups Links