2010-05-31 87 views
8

我正在輸出查詢,但需要指定結果的第一行。我使用QueryAddRow()添加行並使用QuerySetCell()設置值。 我可以創建行很好,我可以將內容添加到該行罰款。如果我將行號的參數從QuerySetCell()中解脫出來,那麼它在輸出時作爲查詢的最後結果都會很好。但是,我需要它作爲查詢的第一行,但當我嘗試使用QuerySetCell設置行屬性時,它只是覆蓋查詢中返回的第一行(即我的QueryAddRow()替換查詢中的第一條記錄)。我現在有的是從recordCount中設置一個變量並安排輸出,但必須有一個非常簡單的方法來實現這一點,我只是沒有得到。 此代碼將行值設置爲1,但會覆蓋查詢中返回的第一行。如何從QueryAddRow()查詢結果的第一行添加一行?

<cfquery name="qxLookup" datasource="#application.datasource#"> 
    SELECT xID, xName, execution 
    FROM table 
</cfquery> 

<cfset QueryAddRow(qxLookup)/> 
<cfset QuerySetCell(qxLookup, "xID","0",1)/> 
<cfset QuerySetCell(qxLookup, "xName","Delete",1)/> 
<cfset QuerySetCell(qxLookup, "execution", "Select this to delete",1)/> 

<cfoutput query="qxLookup"> 
    <tr> 
     <td> 
      <a href="##" onclick="javascript:ColdFusion.navigate('xSelect/x.cfm?xNameVar=#url.xNameVar#&xID=#qxLookup.xID#&xName=#URLEncodedFormat(qxLookup.xName)#', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">#qxLookup.xName#</a> 
     </td> 
     <td>#qxLookup.execution#</td> 
    </tr> 
</cfoutput> 

感謝您的任何幫助。

回答

6

我會爲您的原始查詢添加某種排序順序列,並使用固定值1填充它。

<cfquery name="qxLookup" datasource="#application.datasource#"> 
SELECT xID, xName, execution, 1 as sortorder 
FROM table 
</cfquery> 

將合成行中該列的值設置爲0的值。

<cfset QueryAddRow(qxLookup)> 
... 
<cfset QuerySetCell(qxLookup, "sortorder", "0",1)> 

然後使用查詢查詢將sortorder列的記錄集重新排序。

<cfquery name="qxLookup" dbtype="query"> 
select xid, xname, execution 
from qxLookup 
order by sortorder 
</cfquery> 
+0

謝謝。這比我現在所擁有的更好。我真的很希望我缺少一些簡單的東西(比如QueryAddRow的一個屬性 - 因爲默認是添加最後一行,也許有一個屬性使它成爲第一行?)。 – 2010-05-31 14:12:26

+0

@JS - +1 Ken的建議。 AFAIK,你不會錯過任何東西,QueryAddRow只允許在查詢結尾附加行。 – Leigh 2010-05-31 19:58:42

+0

這工作,謝謝。我留下了#行的屬性,只是將它們添加爲默認的最後一行,然後將QOQ排序。 – 2010-06-01 01:25:18

0

只是一個替代品上面,但你可以採取的ColdFusion出來的圖片,並在SQL中使用類似(在如Oracle)

選擇「myinsertedvalue」從雙 工會 做到這一點只從可變的列表中選擇myrealvalues

您可以結合Kens排序列獲得完整排序。假設你正在從一個DB獲得主查詢!

+0

謝謝你。我在幾個不同的地方使用相同的查詢,並不總是需要這樣做,所以我認爲,因爲我已經在內存中使用了CF路由,所以簡單並且少用1個數據庫。 – 2010-06-01 01:27:07

1

那麼我已經處理過這個問題,對於我來說,答案是有2個單獨的查詢。

1,作爲你的普通查詢,2是查詢查詢,然後做它們的聯合,qofq超出正常查詢,並且應該以你想要的順序給你結果。

事情是這樣的:

<cfquery name="table_a_results" datasource=""> 
select a, b, c 
from table_a 
</cfquery> 

cfset table_b = querynew("a, b, c") 
cfset temp = queryaddrow("table_b") 
cfset temp = querysetcell(table_b,10) 
cfset temp = querysetcell(table_b,20) 
cfset temp = querysetcell(table_b,30) 

<cfquery name="final_query" dbtype="query"> 
select a, b, c 
from table_b 
union 
select a, b, c 
from table_a_results 
</cfquery> 

然後使用這個工具,你可以把查詢在你喜歡的任何順序,但要記住的標籤使用的順序,變更單...

相關問題