所以這是我的情況。我不得不使用一些遺留代碼。此代碼給我一個查詢對象,我必須追加一些行。基本上,我需要複製1行N次(N不是常數),然後手動調整一些數據。複製數據時querySetCell爲NULL?
現在,至少國際海事組織正在做的事情並不是正確的做事方式。我寧願返回一個查詢對象,它不需要在CF端進行修改,並在數據庫上生成正確的數據集。但是,唉,我沒有訪問原始查詢:(
所以這裏是我的破解。我決定寫一個通用函數,重複查詢行,然後我可以手動設置任何我需要的單元格,一旦我有複製所附
請參考下面:
private function duplicateQueryRow(
required query originalQuery,
required numeric rowNum
) {
queryAddRow(arguments.originalQuery, 1);
for (local.i = 1; local.i LTE listLen(originalQuery.columnList); local.i += 1) {
columnName = listGetAt(originalQuery.columnlist, i);
querySetCell(originalQuery, columnName, originalQuery[columnName][rowNum], originalQuery.recordcount);
}
}
問題:
假設某些列都爲NULL 例如,假設柱將aColumn的值是在5 行NULL當我這樣做時,最後一行的ACOLUMN值將是「」,因爲CF沒有處理NULL。現在,如果我做select distinct ACOLUMN from QUERY_NAME
,我會得到第5行和自NULL <> [empty string]
以來的最後一行。
我有一個解決方案,它的下面:
private function duplicateQueryRow(
required query originalQuery,
required numeric rowNum
) {
queryAddRow(arguments.originalQuery, 1);
for (local.i = 1; local.i LTE listLen(originalQuery.columnList); local.i += 1) {
columnName = listGetAt(originalQuery.columnlist, i);
if (originalQuery[columnName][rowNum] NEQ "") {
querySetCell(originalQuery, columnName, originalQuery[columnName][rowNum], originalQuery.recordcount);
}
}
}
這樣的作品,現在因爲NULL值不會被複制,但我就是沒有信心,這是正確的....
想知道是否有人有更好的解決方案?或者至少看看這個功能是否有問題。我想這個需求是一個給定查詢的函數,並且要複製的rowNumber將在查詢的最後一行rowNumber行中返回查詢。
在此先感謝!
現在我傾向於遵循這個建議。由於該功能沒有記錄,所以我可能會稍等一下,看看是否有其他人加入。如果沒有,我會將其標記爲答案。好吧,現在就給它一個鏡頭:)謝謝! – mlnyc
*我可能會稍微等一下*請做。我個人更喜歡文檔化的方法,但無法找到一個。希望別人知道我錯過了一個技巧:) – Leigh