Ich möchte verschachtelte Elemente innerhalb der Struktur festlegen. Hier ist ein Beispiel meines aktuellen Codes:ColdFusion-Struktur verschachtelte Elemente?
<cfset fnResults = StructNew()>
<cfset dateList = "HD_DATE1,HD_DATE2,HD_DATE3,HD_DATE4" />
<cfset servicesEquipment = {
1="Strongly Agree",
2="Agree",
3="Don't Know",
4="Disagree",
5="Strongly Disagree"
}>
<cfset isActive = {
1="Yes ",
0="No "
}>
<cfquery name="UserInfo" datasource="TestDB">
SELECT TOP 1
hd_yn1,
hd_active,
hd_date1,
hd_status,
hd_age1,
hd_date2,
hd_age2,
hd_date3,
hd_date4,
hd_age3,
hd_deg1,
hd_deg2,
hd_toner,
hd_cfgr,
hd_deg4,
hd_deg5,
hd_tonel,
hd_cfgl,
hd_hri,
hd_comment,
hd_rear,
hd_lear,
hd_tosound,
LTRIM(RTRIM(si_last)) + ', ' + LTRIM(RTRIM(si_first)) AS hd_staff,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_YN1' AND tm_code = hd_yn1) AS zhd_yn1,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_STATUS' AND tm_code = hd_status) AS zhd_status,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_AGE' AND tm_code = hd_age1) AS zhd_age1,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_AGE' AND tm_code = hd_age2) AS zhd_age2,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_AGE' AND tm_code = hd_age3) AS zhd_age3,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HEAR_IND' AND tm_code = hd_hri) AS zhd_hri,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HEAR_LOSS' AND tm_code = hd_deg1) AS zhd_deg1,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HEAR_LOSS' AND tm_code = hd_deg4) AS zhd_deg4,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HEAR_TYPE' AND tm_code = hd_deg2) AS zhd_deg2,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HEAR_TYPE' AND tm_code = hd_deg5) AS zhd_deg5,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_TONE' AND tm_code = hd_toner) AS zhd_toner,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_TONE' AND tm_code = hd_tonel) AS zhd_tonel,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_CFG' AND tm_code = hd_cfgr) AS zhd_cfgr,
(SELECT TOP 1 tm_name FROM hmMaster WHERE tm_tblid = 'HD_CFG' AND tm_code = hd_cfgl) AS zhd_cfgl
FROM userRec WITH (NOLOCK)
LEFT OUTER JOIN staffInfo
ON si_staff = hd_staff
WHERE hd_userid = '10051989'
</cfquery>
<cfset fnResults.recordcount = UserInfo.recordcount>
<cfif UserInfo.recordcount EQ 0>
<cfset fnResults.message = "No records were found.">
<cfelse>
<cfloop query="UserInfo">
<cfset qryRecs = StructNew()>
<cfloop array="#UserInfo.getColumnList()#" index="columnName">
<cfif listContains(dateList, columnName, ",")>
<cfset qryRecs[columnName] = URLEncodedFormat(Trim(DateFormat(UserInfo[columnName][CurrentRow],'mm/dd/yyyy')))>
<cfelseif columnName EQ 'hd_active'>
<cfset qryRecs[columnName] = URLEncodedFormat((structKeyExists(isActive, LossInfo[columnName][CurrentRow]))? isActive[UserInfo[columnName][CurrentRow]]:"No ")>
<cfelseif columnName EQ 'hd_tosound'>
<cfset qryRecs[columnName] = URLEncodedFormat((structKeyExists(servicesEquipment, UserInfo[columnName][CurrentRow]))? servicesEquipment[UserInfo[columnName][CurrentRow]]:"")>
<cfelse>
<cfset qryRecs[columnName] = URLEncodedFormat(Trim(UserInfo[columnName][CurrentRow]))>
</cfif>
</cfloop>
</cfloop>
<cfset fnResults.data = qryRecs>
</cfif>
<cfdump var="#fnResults#">
Code oben verwenden Sie einige Logik, um die Daten zu manipulieren. Hier ist Beispiel für meine Ausgabe, nachdem ich fncResults Dump:
DATA
struct
HD_ACTIVE No%20
HD_AGE1 [empty string]
HD_AGE2 [empty string]
HD_AGE3 36
HD_CFGL MMO
HD_CFGR MMO
HD_COMMENT Test
HD_DATE1 09%2F22%2F1993
HD_DATE2 [empty string]
HD_DATE3 [empty string]
HD_DATE4 [empty string]
HD_DEG1 II
HD_DEG2 MM
HD_DEG4 MM
HD_DEG5 UU
HD_HRI NN
HD_LEAR [empty string]
HD_REAR [empty string]
HD_STAFF [empty string]
HD_STATUS PESS
HD_TONEL ALL
HD_TONER ALL
HD_TOSOUND [empty string]
HD_YN1 Y
ZHD_AGE1 [empty string]
ZHD_AGE2 [empty string]
ZHD_AGE3 36
ZHD_CFGL MIDDLE
ZHD_CFGR Mild
ZHD_DEG1 Mild
ZHD_DEG2 Unknown
ZHD_DEG4 Mild
ZHD_DEG5 Unknown
ZHD_HRI None
ZHD_STATUS Maybe
ZHD_TONEL All
ZHD_TONER All
ZHD_YN1 Did Not
RECORDCOUNT 1
Am vorderen Ende ich alle Felder festgelegt haben, die Buchstaben ‚z‘ vor ‚hs‘ haben, um meine Daten für den Titel-Attribut zu sein. Aus diesem Grund möchte ich meine Struktur organisieren, wie folgt aussehen:
DATA
struct
HD_ACTIVE Value: No%20 Title: This is test
HD_AGE3 Value: 36 Title: Years
HD_COMMENT Value: Test Title: Test
Als Randbemerkung Ich habe versucht, verschachtelte Variablen in meiner Struktur zu setzen. Etwas wie folgt aus: <cfset qryRecs[columnName].value =UserInfo[columnName][CurrentRow]>
Diese werfen einen Fehler:
Element HD_YN1 is undefined in a CFML structure referenced as part of an expression.
Ich bin nicht sicher, ob ich brauche noch eine Struktur, um das achive. Auch bin ich nicht sicher, was der beste Weg ist, um diese Art von Struktur zu organisieren. Wenn Sie Vorschläge oder Beispiele haben, lassen Sie es mich bitte wissen. Vielen Dank!
In Bezug auf den Fehler benötigen Sie wahrscheinlich zwei Zeilen Code. Eine zum Erstellen der eingebetteten Struktur; qryRecs [columnName] = {} und dann eins, um der Variablen in der Struktur einen Wert zuzuweisen; qryRecs [columnName] .value = etwas. Möglicherweise müssen Sie prüfen, ob die Struktur für den ersten Teil existiert. Ich wünschte, ich könnte ein Codebeispiel geben, das nicht die Antwort war ... Wenn Sie denken, dass dies die Frage beantworten wird, werde ich ein Beispiel in einer Antwort geben. –
Wenn Sie Beispiel bieten können, wäre das großartig. Vielen Dank. –