1

私は、出荷の準備が整った注文を表示する出荷部門の監視プログラムに取り組んでいます。SQLDependency を使用してこれを実行し、最終的に機能するようになりましたが、クエリに詳細を追加しようとすると、具体的には datetime 列と比較すると、OnChange イベントが繰り返しトリガーされます。比較を削除すると、完全に機能します。

Microsoft のドキュメントを確認しましたが、このタイプの比較が無効であるという記述は見当たりません。

クエリを次のように単純化しました。

SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= '20130614'

私が間違っていることや、日付と比較する別の方法を知っている人はいますか?

コードの一部を投稿できますが、前述したように、WHERE 句に日時が含まれていなくても機能します。

4

3 に答える 3

4

型付きパラメーターを使用してみてください。

WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] > @someDateTime

DateTime 型のパラメーターを渡します。

于 2013-06-21T20:24:32.473 に答える
0

次のようにコマンド パラメータを作成してみてください。dateVar が文字列ではなく DateTime 型の変数であることを確認してください。

cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateVar;

これが誰かを助けることを願っています

于 2015-09-04T01:16:31.127 に答える
0

OnChange イベントが発生した理由を確認していますか? クエリが一部の要件を満たしていない可能性があります。クエリ自体が原因である場合は、SQLDependency サブスクリプション自体が繰り返し発生する原因である可能性があります。この場合、理由はこれを確認する必要があります。eventargsを調べることで、ハンドラーでこれを確認できます。

ルールを読むと、明らかに目立つものは何もありません。だからおそらく試してみてください:

using(SqlCommand cmd = new SqlCommand("SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= @d", conn)){
DateTime myDate = DateTime.Now;
cmd.Parameters.Add(new SqlParameter("@d", myDate));
于 2013-06-21T20:29:16.600 に答える