Hello,
I am currently working on a script and encountered this error in Application Engine:
"Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"
Here's the script:
bool CPIUplift(string olapConnectionName, string version, string yearSource, string yearEnd)
@Description: "Copy nominated cubes from source Version Year/Version Scenario to target Version Year/Version Scenario.";
@Category: "Data Wizards";
@Parameter[olapConnectionName]: "OLAP connection name";
@Parameter[version]: "Source Version element.";
@Parameter[yearSource]: "Source Year element.";
@Parameter[yearEnd]: "End Year element.";
@ParameterDebuggerValue[olapConnectionName]: "OLAP";
@ParameterDebuggerValue[version]: "TEST-01";
@ParameterDebuggerValue[yearSource]: "2023";
@ParameterDebuggerValue[yearEnd]: "2025";
@Returns: "True if successful.";
{
/*--------------------------------------------------------------------------
* Initialisation
*--------------------------------------------------------------------------*/
OLAPConnection olapConn = OLAPCreateNamedConnection(olapConnectionName);
//get year range
OLAPElementList allYears = OLAPGetChildElementList(olapConn, "Year", "All", true);
StringArray years = CreateStringArray();
foreach (OLAPElement year in allYears) {
if (ToString(year) > yearSource and ToString(year) <= yearEnd) {
Append(years, ToString(year));
}
}
StringList yearsSL = ConvertToStringList(years);
/*------------------------------------------------------------------------
* Perform Copy
*------------------------------------------------------------------------*/
foreach(string year in yearsSL) {
if(year == "") {
continue;
}
string sourceYear = ToString(ToInt(year) - 1); //year to be copied
double CPI = 1 + OLAPCellReadNumber(olapConn, "Ledger", 1.0, version, year, ".NA", "Base", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", ".NA", "CPI");
//create source dimension string list list
StringListList sourceSll = CreateStringListList();
Append(sourceSll, ConvertToStringList(version)); //version
Append(sourceSll, ConvertToStringList(sourceYear)); //year
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //period
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //ldg trx type
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //currency
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 01
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 02
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 03
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 04
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 05
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 06
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 07
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 08
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 09
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 10
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //account
Append(sourceSll, ConvertToStringList(OlapDataAreaAllCells)); //ledg meas
//create target string list list
StringListList targetSll = CreateStringListList();
Append(targetSll, ConvertToStringList(version)); //version
Append(targetSll, ConvertToStringList(year)); //year
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //period
Append(targetSll, ConvertToStringList("Base")); //ldg Trx Type
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //currency
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 01
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 02
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 03
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 04
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 05
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 06
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 07
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 08
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 09
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //analysis 10
Append(targetSll, ConvertToStringList(OlapDataAreaAllCells)); //account
Append(targetSll, ConvertToStringList("CPI")); //measure
//clear target cells
OLAPDataArea targetDataArea = OLAPCreateDataArea(olapConn, "Ledger",
OlapDataAreaIncludeB + OlapDataAreaSuppressNull, OlapDataAreaOperatorNone, 0.0, OlapDataAreaOperatorNone, 0.0,
targetSll);
OLAPDeleteDataArea(targetDataArea);
//copy source data
OLAPDataArea sourceDataArea = OLAPCreateDataArea(olapConn, "Ledger",
OlapDataAreaIncludeB | OlapDataAreaSuppressNull, OlapDataAreaOperatorNone, 0.0, OlapDataAreaOperatorNone, 0,
sourceSll);
OLAPCopyDataArea(sourceDataArea,"Ledger","Relative", CPI , targetSll, sourceSll, true, true);
}
OLAPDisconnect(olapConn);
return true;
}
The process is valid though. Can you spot where might be the error is? I tried searching for similar error - looking for possible resolution, but didn't found one.
The output doesn't throw which row has error so it's difficult for me to identify which part is incorrect.
