2014-07-25 80 views
0

我想構建數組來存儲報表列名,但我得到了以下錯誤:您試圖解引用類型爲coldfusion.runtime的標量變量。數組作爲具有成員的結構。Coldfusion結構數組錯誤

enter image description here

我的代碼是:

<cfscript> 
     currentAssetNum = 0; 
     headerLabels  = ""; 
     headerUnderlines = ""; 
     reportContent = ""; 

     columns = eqInventoryHelper.getPreformattedColumnCharacteristics(showComponents = variables.showComponents); 

     // Get an array of the columns in the order they should be displayed. 
     columnOrder = StructSort(columns, "numeric", "asc", "sortOrder"); 

     for (columnName in columnOrder) { 
      //for (columnIndex=1; columnIndex <= StructCount(columns); columnIndex++){       
      if (columns[columnName].justify == "left") {       
       headerLabels &= LJustify(columns[columnName].label, columns[columnName].length) & " "; 
      } else {      
       headerLabels &= RJustify(columns[columnName].label, columns[columnName].length) & " "; 
      } 
      headerUnderlines &= RepeatString("-", columns[columnName].length) & " "; 
     }  
     reportHeaders = headerLabels & variables.newLine & headerUnderlines; 

    </cfscript> 

eqInventoryHelper.cfc:

<cffunction name="getPreformattedColumnCharacteristics" output="false"> 
    <cfargument name="showComponents" required="true"/> 
    <cfscript> 
     var columnSort = 1;   
     var columns = { 
      asset_num = {label = "KFS Asset Number", length = 16, justify = "left", sortOrder = columnSort++}, 
      manufacturer_name = {label = "Manufacturer", length = 30, justify = "left", sortOrder = columnSort++}, 
      manufacturer_model_num = {label = "Model", length = 30, justify = "left", sortOrder = columnSort++}, 
      serial_num = {label = "Serial Number", length = 30, justify = "left", sortOrder = columnSort++}, 
      condition_code = {label = "Cond CD", length = 8, justify = "left", sortOrder = columnSort++}, 
      owner_chart = {label = "Owner", length = 6, justify = "left", sortOrder = columnSort++}, 
      owner_acct = {label = "Account", length = 10, justify = "left", sortOrder = columnSort++}, 
      cur_uc_fnd = {label = "UC Fund", length = 8, justify = "left", sortOrder = columnSort++}, 
      org_cd = {label = "Org Code", length = 10, justify = "left", sortOrder = columnSort++}, 
      custodial_code = {label = "Custodial Code", length = 15, justify = "left", sortOrder = columnSort++}, 
      pi_name = {label = "Principal Investigator", length = 30, justify = "left", sortOrder = columnSort++}, 
      uc_acquisition_code = {label = "Acq. Type", length = 10, justify = "left", sortOrder = columnSort++}, 
      received_date = {label = "Received Date", length = 14, justify = "right", sortOrder = columnSort++}, 
      asset_desc = {label = "Asset Description", length = 51, justify = "left", sortOrder = columnSort++}, 
      ucop_tag_num = {label = "UCOP Tag Number", length = 16, justify = "left", sortOrder = columnSort++}, 
      asset_location = {label = "Asset Location", length = 60, justify = "left", sortOrder = columnSort++}, 
      asset_type = {label = "Asset Type", length = 11, justify = "left", sortOrder = columnSort++}, 
      is_uc_title = {label = "UCD Title", length = 14, justify = "left", sortOrder = columnSort++}, 
      total_cost = {label = "Total Cost", length = 12, justify = "right", sortOrder = columnSort++}, 
      useful_life = {label = "Useful Life", length = 12, justify = "right", sortOrder = columnSort++} 
     }; 

     // If showing components, we tack the component specific columns to the main columns array. 
     if (arguments.showComponents) { 
      columns.component_num = {label = "Component Number", length = 18, justify = "left", sortOrder = columnSort++}; 
      columns.component_desc = {label = "Component Description", length = 45, justify = "left", sortOrder = columnSort++}; 
      columns.component_manufacturer_name = {label = "Manufacturer Name", length = 18, justify = "left", sortOrder = columnSort++}; 
      columns.component_model_num = {label = "Manufacturer Model Number", length = 26, justify = "left", sortOrder = columnSort++}; 
      columns.component_serial_num = {label = "Serial Number", length = 20, justify = "left", sortOrder = columnSort++}; 
      columns.component_po_number = {label = "PO Number", length = 12, justify = "right", sortOrder = columnSort++}; 
     } 
     return columns; 
    </cfscript> 
</cffunction> 

謝謝。

+1

哪一條是538行? –

+0

對於cfscript,第538行:for(columnName in columnOrder){ – tigerpuzzle

+0

看起來像在參數4中傳遞的值在結構中不存在並且該數組爲空 –

回答

2

我強烈懷疑您使用的是早於for(index in array)語法的ColdFusion版本。 This was only added in ColdFusion 9.0.1

所以,如果你正在運行9.0,它不會工作,它會假設你的意思是迭代結構。

+0

我的版本是CF9。 – tigerpuzzle

+0

亞當可能是對的。轉儲您的完整版本號。文檔說它是在[ColdFusion 9 Update 1]中引入的(http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0a0e0-7fdf.html#WSc3ff6d0ea77859461172e0811cbec0a0e0-7fe8)。聽起來像你正在使用9,0,0。 – Leigh

+0

乾杯@Leigh:我相應地更新了我的答案。我第一次檢查時找不到那個參考。 –