2016-11-11 4 views
0

サービスを実行しているときに以下のデフォルト値を挿入したいのですが、解決する。複数実行ステートメントサービスを実行しているときに、「ヌルからプロパティを読み込めません」というエラーが発生しました。

スクリプトでランタイムエラー( "プロセス: 'CustomPersonalGS実践' ProcessItem: '初期化' 種類: 'ITEM'" -1:-1).TypeError:ヌルからプロパティ "パラメータ" を読み取ることができません

enter image description here

enter image description here

//Initialise SQL Query List 
 
tw.local.sqlQueries = new tw.object.listOf.SQLStatement(); 
 
tw.local.sql = ""; 
 

 
tw.local.customerPD = new tw.object.customerPD1BO(); 
 
tw.local.customerPD.customerPersonalDetailsList = new tw.object.listOf.customerSpecificPersonalDetailsListBO(); 
 
var custPersonalDetails = new tw.object.customerSpecificPersonalDetailsListBO(); 
 
custPersonalDetails.customerId = "8467"; 
 
custPersonalDetails.custPersonalDetailsId = "8"; 
 
custPersonalDetails.isBPMEnabled = true; 
 
custPersonalDetails.isCCPEnabled = true; 
 
custPersonalDetails.isCCPMandatory = true; 
 
custPersonalDetails.isLatestVersion = true 
 
tw.local.customerPD.customerPersonalDetailsList.insertIntoList(tw.local.customerPD.customerPersonalDetailsList.listLength, custPersonalDetails); 
 

 

 
tw.local.sql = "INSERT INTO CUSTOMPERSONALDETAILSQUESTION(CUSTOMERID,CUSTPERSONLADETAILSID,ISBPMENABLED,ISCCPENABLED,ISCCPMANDATORY,ISLATESTVERSION) VALUES (?,?,?,?,?,?) "; 
 

 
function addSQLStatement() { 
 
    tw.local.sqlQueries[tw.local.sqlQueries.listLength] = new tw.object.SQLStatement(); 
 
} 
 

 
function addParam(value,type,mode) { 
 
    log.info("VALUE :" + value); 
 
    var newParam = new tw.object.SQLParameter(); 
 
    newParam.value = value; 
 
    newParam.type = type; 
 
    newParam.mode = mode; 
 
    if(tw.local.sqlQueries == null){ 
 
     tw.local.sqlQueries = new tw.object.listOf.SQLStatement(); 
 
    } 
 
    if(tw.local.sqlQueries[tw.local.sqlQueries.listLength] == null){ 
 
     tw.local.sqlQueries.insertIntoList(tw.local.sqlQueries.listLength, new tw.object.SQLStatement()); 
 
    } 
 
    if(tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters == null){ 
 
     tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters = new tw.object.listOf.SQLParameter(); 
 
    } 
 
    var paramsLength = tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters.listLength; 
 
    tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters[paramsLength] = newParam; 
 
} 
 

 
for(var i=0;i<tw.local.customerPD.customerPersonalDetailsList.listLength;i++){ 
 
    addSQLStatement(tw.local.sql); 
 
\t addParam(tw.local.customerPD.customerPersonalDetailsList[i].customerId,"VARCHAR","IN"); 
 
\t addParam(tw.local.customerPD.customerPersonalDetailsList[i].custPersonalDetailsId,"VARCHAR","IN"); 
 
\t var yesNoFlag = "N"; 
 
\t if(tw.local.customerPD.customerPersonalDetailsList[i].isBPMEnabled){ 
 
\t \t yesNoFlag="Y"; 
 
\t \t addParam(yesNoFlag,"CHAR","IN"); 
 
\t } 
 
\t yesNoFlag = "N"; 
 
\t if(tw.local.customerPD.customerPersonalDetailsList[i].isCCPEnabled){ 
 
\t \t yesNoFlag="Y"; 
 
\t \t addParam(yesNoFlag,"CHAR","IN"); 
 
\t } 
 
\t yesNoFlag = "N"; 
 
\t if(tw.local.customerPD.customerPersonalDetailsList[i].isCCPMandatory){ 
 
\t \t yesNoFlag="Y"; 
 
\t \t addParam(yesNoFlag,"CHAR","IN"); 
 
\t } 
 
\t yesNoFlag = "N"; 
 
\t if(tw.local.customerPD.customerPersonalDetailsList[i].isLatestVersion){ 
 
\t \t yesNoFlag="Y"; 
 
\t \t addParam(yesNoFlag,"CHAR","IN"); 
 
\t } 
 
} \t

答えて

0

私が知る限り、SQLのパラメータリストを初期化していません。

var paramsLength = tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters.listLength; 

をあなたはtw.local.sqlQueriesにエントリを作成するときただし、パラメータの配列を初期化しませんでした - それはあなたが呼び出す行38です。また、addSQLStatement()関数はSQLの入力を無視することに注意してください(その値はハードコードされているため、実際に渡す必要はありません)。あなたがaddSQLStatementを次のように変更したと思います。 -

あなたのコードは動作します。さらに、実際にこの関数からtargetQueryを返して、配列の最後のものを見つける必要がなくなり、 "addParams"メソッドに渡すことができます。または、代わりに配列の先頭に挿入し、最後のものの代わりに0番目の項目を更新します。

-AP

0

この比較は正常に動作することはありません。 array[array.length]は常にnull(35行目)です。また

if (tw.local.sqlQueries[tw.local.sqlQueries.listLength].parameters == null){ 

あなたがリストの最後の要素で作業したい場合は、次の行では、あなたがarray[array.length - 1]のようなものを使用することをお勧めします。個人的には、私はいくつかの一時的な変数を使用し、それをいくつかのものを行い、最後にリストに挿入します(@Drux's answerに似ています)。

関連する問題