偶然にも、SQL Server データベース内のテーブルの 1 つに対するクエリの結果が予期しないことをしていることに気付きましたが、その理由はわかりません。
簡潔にするために、クエリからいくつかのフィールドを削除し、並べ替え基準のみを含めます。以下のコードの 2 つのクエリについて考えてみましょう。
bindingSource_History.DataSource = AsTable("SELECT [Serial Number], [Actual Ship Date] FROM dbo.History");
bindingSource_History.Sort = "Actual Ship Date DESC";
と
bindingSource_History.DataSource = AsTable("SELECT TOP 100 [Serial Number], [Actual Ship Date] FROM dbo.History ORDER BY [Actual Ship Date] DESC");
それらの主な違いは、1 つは日付でソートされた「履歴」テーブルの内容全体を返し、もう 1 つはユーザーが設定した数量を返すことです。既定では、履歴テーブルはシリアル番号の昇順で並べ替えられ、シリアル番号は nvarchar 型です。
結果を見ると、2 番目のクエリが少し順不同のデータのセットを返していることに気付きました。
どうしてこれなの?残りの行は正しく並べ替えられており、最初のクエリは意図したとおりに機能しているように見え、図の丸で囲まれた行が反転しています。SQL Server の並べ替えフィルターは、BindingSource
.
WHERE [Actual Ship Date] = '08/01/2013'
2 番目のクエリに追加すると、行が正しい順序で配置されることに気付きました。誰でもこれに光を当てることができますか?結果はそれほど間違っていませんが、私のプログラムのコンテキストではまだ間違っています。