Rule Issue
Posted: Fri Sep 11, 2015 6:59 pm
So I don't often hit rule issues but I've hit one that's making me scratch my head. Hopefully it's down to Fridayitis. I am however on the verge of doubting my sanity so I thought I'd better ask here before I go made.
So some background. I'm trying to build something that generates a sequential code based defined ranges. However numbers that have been already taken can expire and be reused. So I have built a cube that does this. I then have a summary cube that displays current status. The dimensions in each cube is as follows:
Summary
InCaps Facility
InCaps Test Code Result
InCaps Code Gen Test 3rd Parameter
InCaps Code Gen Test Code Status
Detail
InCaps Facility
InCaps Test Code Result
InCaps Code Gen Test 3rd Parameter
InCaps Code Gen Sequential Code
InCaps Test String and Numeric
The summary cube looks like this: The number goes down to 999 but only for certain combinations does it use all of them. Only 999 has a weight of 1 the consolidation Available Sequential Code which contains the next digit available for code generation. Those marked with Y have already been taken. Those with N (none visible in the screen cap) are unavailable
Here are the rules for this:
In the Summary cube there is current status. This should point to the available sequential code. The summary cube looks like this:
As you can see I'm getting #N/A in the cubes. Here are the rules for the summary cube:
The bizzare thing is that if I calculate in the detail cube the #N/A disappears and the values appear.
I have tried saving rules and restarting the server, just in case there was an issue with cube dependencies.
Any pointers on why this is happening will be greatly appreciated,
Jim.
So some background. I'm trying to build something that generates a sequential code based defined ranges. However numbers that have been already taken can expire and be reused. So I have built a cube that does this. I then have a summary cube that displays current status. The dimensions in each cube is as follows:
Summary
InCaps Facility
InCaps Test Code Result
InCaps Code Gen Test 3rd Parameter
InCaps Code Gen Test Code Status
Detail
InCaps Facility
InCaps Test Code Result
InCaps Code Gen Test 3rd Parameter
InCaps Code Gen Sequential Code
InCaps Test String and Numeric
The summary cube looks like this: The number goes down to 999 but only for certain combinations does it use all of them. Only 999 has a weight of 1 the consolidation Available Sequential Code which contains the next digit available for code generation. Those marked with Y have already been taken. Those with N (none visible in the screen cap) are unavailable
Here are the rules for this:
Code: Select all
########
FeedStrings;
SkipCheck;
########
### Eliminates and combination where a code range not needed
['String'] = S:
IF(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Range End')=0
,'N'
,Continue
);
### Eliminates code ranges outside those specified
['String'] = S:
IF(Numbr(!InCaps Code Gen Sequential Code)>DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Range End') %
Numbr(!InCaps Code Gen Sequential Code)<DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Range Start')
,'N'
,Continue
);
### Rule for the first in range as no previous
['InCaps Code Gen Sequential Code':'1','Numeric'] = N:
IF(DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,!InCaps Code Gen Sequential Code,'String')@='N'
,0
,IF(DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,!InCaps Code Gen Sequential Code,'String')@=''
,1
,0
)
);
['Numeric'] = N:
IF(DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,!InCaps Code Gen Sequential Code,'String')@='N'
,DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,
Str((Numbr(!InCaps Code Gen Sequential Code)-1),3,0),'Numeric')
,IF(DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,!InCaps Code Gen Sequential Code,'String')@='Y'
,DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,
Str((Numbr(!InCaps Code Gen Sequential Code)-1),3,0),'Numeric')
,IF(DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,!InCaps Code Gen Sequential Code,'String')@='' &
DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,
Str((Numbr(!InCaps Code Gen Sequential Code)-1),3,0),'Numeric')=0
,Numbr(!InCaps Code Gen Sequential Code)
,DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,
Str((Numbr(!InCaps Code Gen Sequential Code)-1),3,0),'Numeric')
)
)
);
######
Feeders;
######
As you can see I'm getting #N/A in the cubes. Here are the rules for the summary cube:
Code: Select all
########
FeedStrings;
SkipCheck;
########
### Pull current status from detail cube
['Current Status'] = N:
DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Available Sequential Code','Numeric');
### Set code append
['Code Append'] = S:
IF(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status')=0
,''
,IF(Long(trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Range End'),3,0)))=1 &
!InCaps Facilities@<>'R12'
,trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
,IF(Long(trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Range End'),3,0)))=2 &
!InCaps Facilities@<>'R12'
,IF(Long(trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0)))=1
,'0'|trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
,trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
)
,IF(Long(trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0)))=1
,'00'|trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
,IF(Long(trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0)))=2
,'0'|trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
,trim(Str(DB('InCaps Test Code Status',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Current Status'),3,0))
)
)
)
)
);
######
Feeders;
######
['Range End']=>['Current Status'];
['Range End']=>['Code Append'];
['Range End']=>DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Available Sequential Code','String');
['Range End']=>DB('InCaps Test Code Status Detail',!InCaps Facilities,!InCaps Test Code Result,!InCaps Code Gen Test 3rd Parameter,'Available Sequential Code','Numeric');
I have tried saving rules and restarting the server, just in case there was an issue with cube dependencies.
Any pointers on why this is happening will be greatly appreciated,
Jim.