5

与えられたクエリ(擬似コード):

<cfquery name="myquery">SELECT * FROM stuff</cfquery>

最初のレコードを削除するにはどうすればよいですか?この場合、SQLを変更することはできません。私は試しました:myquery.RemoveRows(0,1);しかしエラーを受け取りました:

No matching Method/Function for Query.REMOVEROWS(numeric, numeric) found

私はRailo3BTWにいます

4

6 に答える 6

11

見よ、見よ:

myquery.RemoveRow(1);

まさに私が望んでいたことをします。少し違うことをするためにそれをRailoに任せてください!

于 2011-04-21T23:58:11.373 に答える
4

元のオブジェクトから行を削除する方法を思いつかない。私が考えることができる2つのことは次のとおりです。

  1. クエリのクエリを実行します。これは、不要なレコードを識別して、WHEREで指定できることを前提としています。

  2. queryNew()を使用して新しいクエリを作成します。querySetCell()を実行する元のクエリをループして、必要なレコードの新しいクエリを作成します。この機能は、UDFに非常に簡単に組み込むことができます。実際、それを述べることで、cflib.orgをチェックすることを考えさせられました。#3を参照

  3. cflib.orgを確認してください:) http://www.cflib.org/udf/QueryDeleteRowsを参照してください

于 2011-04-21T23:42:47.063 に答える
2

「RemoveRows」は実際には基礎となるJavaメソッドの呼び出しであるため、これらの数値をキャストする必要があります。そのようです:

myquery.RemoveRows(
    JavaCast( "int", 0 ) // starting row, zero-based
    ,JavaCast( "int", 1 ) // number to delete, returns error if too many
)

したがって、おそらくメソッドは「int、int」であり、キャストしない場合は「numeric、numeric」のようになります。これは文書化されていないと主張する人もいるかもしれませんが、(私が行ったように)関数でラップできるほど簡潔なので、変更された場合は、関数の内容を別の回避策に置き換える必要があります。

于 2011-08-25T19:20:41.767 に答える
2

RailoはremoveRowsを追加しました。ここを参照してください。このメソッドを使用する私のACFコードは、Railoでも実行されるようになり、変更はありません。

これにより、Railoの実装はACFと一致するようになりました。(元のRailo実装は0ベースでしたが、新しい実装とACFバージョンは両方とも1ベースであることに注意してください。)

于 2012-03-19T03:17:01.803 に答える
0

私が通常行う方法は、次のようなクエリのクエリを使用することです。

SELECT * FROM myquery
LIMIT {1,10000}

Railoでは機能するはずです。クエリを1つオフセットし、10000レコードをプルします。

これを行うこともできます:

SELECT * FROM myquery
WHERE {primarykey} <> {value}

渡した主キー値を除くすべてのレコードを選択する場所。

ColdFusionのすばらしい点は、探していることを正確に実行する方法がたくさんあることです。

于 2011-04-22T02:11:19.960 に答える
0

結果を処理するときに、行をスキップすることができます。

<cfoutput query="myquery">
  <cfif myquery.currentrow GT 1>
    <!---Do the work here. --->
  </cfif>
</cfoutput>
于 2011-04-27T04:46:06.553 に答える