私はどのように知りたいですかSQL Queryの結果を変数に入れることはできますか?SQLクエリはDelphiで変数に出力されますか?
私はこの
integerVariable := UniQuery1.RecordCount;
が、これを知っていますか?あなたが何をする必要があるか
integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000'
私はどのように知りたいですかSQL Queryの結果を変数に入れることはできますか?SQLクエリはDelphiで変数に出力されますか?
私はこの
integerVariable := UniQuery1.RecordCount;
が、これを知っていますか?あなたが何をする必要があるか
integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000'
が結果が存在する場合、その後、結果をチェックし、その後、SQLを「実行」変数に格納最初で、ここで私が何を意味するかです:
procedure ...;
var
LCount: Integer;
begin
LCount := 0;
//
// note that I am doubling the single quote to escape it
//
// set the query
UniQuery1.SQL.Text := 'SELECT COUNT(*) FROM Orders WHERE Amount=''1000'';';
//
// "execute" it
//
UniQuery1.Open;
//
// SELECT COUNT(*) will return 1 record with 1 field
// most likely the field name is 'count' <= lower case
// but we are sure that there should be only 1 field so we
// access it by Fields[Index].As[TYPE]
//
LCount := UniQuery1.Fields[0].AsInteger;
ShowMessageFmt('Total count of orders with Amount = 1000: %d', [LCount]);
end;
EDIT: 「COUNT」には常に返信がありますことを指摘してくれてありがとう。
明らかに、この特定のクエリは常に結果を返します。さらに、 'COUNT()'は常に値を返し、決してNULLを返さないため、(NULLではなく)値を返します。だから、この場合は 'not IsEmpty'テストを省略することができます。 –
@Andriyが正しいです。 'UniQuery1.FindFirst'も必要ありません。 – kobik
'TUniQuery'は知りませんが、' TUniQuery.Open'を実行した後の最初の行のデータセットではありませんか? UniQuery1.Openのようなものではありません。 LCount:= UniQuery1.Fields [0] .AsInteger; '? – TLama
Ehm、何ですか?私は、あなたがデータセットの最初の行にいる場合は 'UniQuery1.Fields [0] .AsInteger'のようなものを意味すると思いますが、UniQuery1がどのタイプであるのかわかりません。 – TLama
@TLama UniQuery1:TUniQuery、http://www.devart.com/unidac/のUniDACコンポーネントを使用しています。 – ComputerSaysNo
質問を解決する答えを忘れないでください。 /meta.stackexchange.com/a/5235/179541)。将来の訪問者が適切なソリューションを認識するのに役立ちます。ありがとう、StackOverflowをお楽しみください! – TLama