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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

MySQL

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

PHP

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

Q&A

1回答

3250閲覧

datareaderの取得順

landy77

総合スコア1614

C#

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

MySQL

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

PHP

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

0グッド

0クリップ

投稿2015/02/05 13:13

以前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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

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

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

投稿2015/02/06 10:21

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問