質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • PHP

    19766questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • C#

    6832questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • MySQL

    5681questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

datareaderの取得順

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 908

landy77

score 1415

以前PHPで作成したWEBシステムをC#へ移しています。
よくある不動産会社の社内でのデータ管理用プログラムでPHPで作成してあったのですが、今回FAXの送信をする事になり、だんだん細かい動作をする必要が出てきたのでこの際にWindowsフォームへ移すのを了解して頂きました。

で、一覧画面がありまして、それをWinFormへ移した際にちょっと私では解決出来ない問題が起こっています・・・

select * 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を移して、
com.CommandText = sql;
MySqlDataReader dr = com.ExecuteReader();
while (dr.Read()){
 //GRIDへの追加処理
}
こんな感じでグリッドへ追加する処理を書きました(接続処理等は端折ってます)

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
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

聞いたことのない現象ですね。

回避方法としては、
・ 特に加工を行わずグリッドに追加しているのであれば、グリッドのDataSourceDataReaderを設定
・ もし加工が必要ならばBindingListに詰めなおしてソートし直し

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19766questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • C#

    6832questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • MySQL

    5681questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。