DBGridで行の入れ替え


SAYACA  2002-12-19 23:03:12  No: 2368

DBGrid  で複数選択行を上下させることは可能なのでしょうか?

やりたいこと
1.DBGridで連続した複数行を選択。
2.その行を「1行上に・・・。」というボタンを押下すると
    複数行が1行上に移動する。
3.それをリアルタイムで行う。
4.テーブルにはデータをすぐには反映させたくない。
    (キャンセルボタンでキャンセルが効くようにしたいため。)

以上のことは、可能なのでしょうか?
テーブルに保存すればできるというのであるなら、
ワーク用のテーブルを作成して対応します。

このようなことをできるのであれば宜しくご教授ください。

お願いいたします。


にしの  2002-12-20 02:55:56  No: 2369

単純に考えれば、
1.選択された複数行の、上の1行をメモリに保存
2.選択された複数行の、上の1行を削除
3.選択された複数行の下に、メモリに保存した1行を挿入
ですね。
3の挿入のとき、もしかしたら下を全部一時テーブルに退避して、メモリの1行を追加、一時テーブルに退避したデータを追加、としなければならないかもしれません。
この考え方は、CSV形式のような場合です。
データベース内で、追加した順序でレコードが配置されているかどうかはわかりません。
もしかしたら、rec1,rec2,rec3とあり、rec2を削除してrec4を追加したとき、rec1,rec4,rec3という並びになるかもしれません。こういう仕様の場合、上の方法は使えません。

他の方法では、ソートするIDを付加して、その番号を変更するというのがあります。
例えば、
ID,DATA
---------
1,TEST-A
2,TEST-B
3,TEST-C
4,TEST-D
5.TEST-E
とあって、TEST-CとTEST-D(3,4行目)を選択、それを上に移動なら、データ的には
ID,DATA
---------
1,TEST-A
4,TEST-B
2,TEST-C
3,TEST-D
5.TEST-E
となります。
これを、IDでソートさせれば期待通りの順番になりますよね。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加