- PR -

datagridで行の値を入れ替えたい

投稿者投稿内容
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-26 12:54
引用:

じいじさんの書き込み (2004-01-26 12:21) より:
NAL-6295さんの方法で、DataTable上(?)での値の入れ替えはできましたが、
それをデータベースへ書き込んで、再度読み込んで表示すると、今までと同じように、
同じ値になってしまいます。




それを実装したいのであれば、

1.現在の位置情報をDBに保存する必要がある。
2.読み込む時に、現在の位置情報順に読み込まなければいけない。

の2点が必要かと思います。
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-01-26 13:53
データテーブルの情報がそのままデータベースに書き込まれるものと思っていました。
どうも基本が分かっていないようで、すみません。
もっともっと勉強します。とりあえず配列を使ってみます。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-26 14:04
引用:

じいじさんの書き込み (2004-01-26 13:53) より:
データテーブルの情報がそのままデータベースに書き込まれるものと思っていました。
どうも基本が分かっていないようで、すみません。
もっともっと勉強します。とりあえず配列を使ってみます。




すいません。読み違えてました。

データテーブルの情報はデータベースに書き込まれますが、表示順は書き込まれませんと
書いたつもりでした。

コード:
Me.BindingContext(dataset, datatable).EndCurrentEdit()



この一文をコメントアウトしても駄目ですか?
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-01-26 14:41
コメントアウトしてもダメでした。
VS.net 2002を使っています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-26 14:47
 あれれ?ちょっと待ってください。データの順番を表す項目は、データベース上にない、のですよね?

 そうであれば、いくらDataTableの順番を入れ替えたところで、再取り出ししたときに表示される順番を変更することはできません。なぜなら、データベースは「データの集合」にすぎず、「データの順序」は関係ないからです。

参考:
http://www.mars.dti.ne.jp/~o-shin/new/whatrdb/body40.html
http://www.mars.dti.ne.jp/~o-shin/new/whatrdb/body80.html
(とりあえず、RDBに関係したもの、ということで)

ですから、「取り出し順序」が必要な場合は、「取り出し順序」を表す「列」を定義しなければなりません。


 ところで、「あの〜 初心者なんですけど・・・・」は、どれにたいしてでしょう?申し訳ないですが、「何がわからない」のか、「わからない」/「忘れている」のです。そういう意味で、初心者の方の質問はとても参考になるのです。
#新人君の教育や、親類近所連中に聞かれたとき、
#何を教えなければならないか、わからないところを教えてくれる

 それで、私が前に示した「自動で、たくさん使っているものを先に表示する」は、検討していただけましたでしょうか。NVL関数以外はそのまま使えると思います。SQL ServerではNULLは後ろに置かれるようなので、Accessも同じだと思います。
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-01-28 11:21
Jittaさんに教えていただいた方法にトライしています。
報告はしばらくお待ちください。
コンボボックスに使用頻度別の学習機能を持たせるという感じですね。
RDBに関係したホームページも見ました。
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-02-09 11:54
Jittaさんへ
しばらくインターネットのない環境にいたので報告が遅れてしまいました。
その間SQL関係の本を読んでいました。

以前と違うのは、マスターテーブル(T県名)にIDを付けました。

T県名             T顧客
---------------------- ----------------------------
ID 県名 ID 氏名 県ID ・・・・・・
01 東京都 001  じいじ 01           
02 神奈川県 002 □▲ 02
03 静岡県 003 ○× 02
04 愛知県 004 △○ 03
: : : : :
---------------------- ----------------------------  とします。

ここで、Jittaさんのコードを元に

SELECT * FROM T県名
LEFT JOIN(SELECT 県ID,COUNT(県ID) AS cnt FROM T顧客 GROUP BY 県ID) AS dt
ON T県名.ID = dt.県ID
ORDER BY 4 DESC,1

とやった結果が
---------------------------------------
ID 県名 県ID cnt
02 神奈川県 02 2
01 東京都 01 1
03 静岡県 03 1
04 愛知県 null null
: : : :
--------------------------------------- でした。

このあとはまだやっていませんが、コンボボックスの
DataSouceとDataMemberを設定すればできると思います。
IDを加えたので他の方法もあると思いますが、長い間ありがとうございました。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-09 12:20
ちょっとだけ。

 SELECT * 〜 ORDER BY 4 ですが、「テーブル定義」が変わると「4」も変更しなければなりません。それだけ注意してください。できるだけ、列名を指定する方がよいです(若干、スピードも上がる)。

 「個数が同じだったときも、順番を一意にする」為の追加がされていますね。私、忘れてました。

スキルアップ/キャリアアップ(JOB@IT)