以前PHPで作成したWEBシステムをC#へ移しています。
よくある不動産会社の社内でのデータ管理用プログラムでPHPで作成してあったのですが、今回FAXの送信をする事になり、だんだん細かい動作をする必要が出てきたのでこの際にWindowsフォームへ移すのを了解して頂きました。
で、一覧画面がありまして、それをWinFormへ移した際にちょっと私では解決出来ない問題が起こっています・・・
lang
1select * from tbl_bukken where enable = 1 AND bukken_zokusei IN (1,2,3) AND `status` IN (1,3) ORDER BY kanri_date DESC ,`date` DESC LIMIT 0 , 20
という物で、管理用日付が2つあり、その順に並び替えるといった物です。
SQLは問題なく通り、bukken_idが
815,816,817,818,813,814,808,809,810,811,812,806,805,802,804,796,797,799,800,795
と言う順番で20件検索されます。
PHP側では問題なくその順で表示されていたのですが、C#に同じSQLを移して、
lang
1com.CommandText = sql; 2MySqlDataReader dr = com.ExecuteReader(); 3while (dr.Read()){ 4 //GRIDへの追加処理 5}
こんな感じでグリッドへ追加する処理を書きました(接続処理等は端折ってます)
ExecuteReader()を実行した際にブレイクをかけてdrをクイックウォッチの結果ビューで見ると先ほどの通り0に815、1に816・・と正しい順番で入って来てるのですが、実際に最初にwhile(dr.read())した中だと795が最初に来てしまうのです。
実際にはグリッドに
795,814,809,804,810,812,800,806,815,799,808,813,8796,817,811,805,797,816,802,818
の順で追加されていきます。
最初はデータ自体は正しく入っててグリッドのソートか何かが知らない間にONになってて並び変わってるのかと思いましたが、そうではなかったです。
SQL自体は正しく実行され、drにも正しい順番で入ってるのにwhileで回すと795,814・・のなぜこの順番かも分からない並びでデータがグリッドに追加されます。
なにかヒントを頂けませんでしょうか・・・?
VS2013 C# Framework4.0 MySQLConnector6.8.3.0
参考データを出しておきます、出て欲しい順に並んでます。
bukken_id , kanri_date , date
815,2015-01-09,2015-01-09
816,2015-01-09,2015-01-09
817,2015-01-09,2015-01-09
818,2015-01-09,2015-01-09
813,2015-01-07,2015-01-07
814,2015-01-07,2015-01-07
808,2015-01-05,2015-01-05
809,2015-01-05,2015-01-05
810,2015-01-05,2015-01-05
811,2015-01-05,2015-01-05
812,2015-01-05,2015-01-05
806,2014-12-24,2014-12-24
805,2014-12-19,2014-12-19
802,2014-12-16,2014-12-16
804,2014-12-15,2014-12-18
796,2014-12-15,2014-12-15
797,2014-12-15,2014-12-15
799,2014-12-15,2014-12-15
800,2014-12-15,2014-12-15
795,2014-12-12,2014-12-12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。