@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VB2005 DataGridView 明細編集方法について

投稿者投稿内容
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-06-01 11:21
VB2005のWindowsAplicationで開発を行っています。

 お客様からの要望で、明細入力をExcelのように行いたいといわれました。
一行一行の編集ではなく、セルを縦横無尽に修正したいようです。

 当方は一行毎の変更・追加・削除を考えていました。

 VB2005のDataGridViewで、どこまで可能なのでしょうか?
 また、DB更新はDeleteInsertしかないのでしょうか?

 ご教授ください。
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2006-06-01 14:33
 どこまで・・・と言われると辛いですが、Excelチックな動作は可能ですよ
 行をまたがって複数セルをブロック状に選択して、別のところに貼り付ける、とかいうと、かなりのコーディングが要ると思いますが、コピー&ペーストをサポートしなければ実に簡単です。

 DB更新は、実際にはデータを削除せずに削除フラグに1を立てるという風にもできますし、ストアドを呼ぶという風にも出来ます。
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-06-01 15:10
 こばさん、ご返信ありがとうございます。

 コピー&ペーストはなんとかご勘弁頂く方向にもって行こうと思います。

 DB更新の話しですが、明細を自由に編集できるようにすると、一回の編集で
追加・変更・削除が出来てしまいますよね(ある行のあるセルの内容を変更し、
その後、一行追加したり、今度は不要な行を削除するなど)。

 セルの編集が起こる度にDBの更新をする事はさけたいと考えています。
そうなると、上記かっこ内の様な明細の編集作業が終了した時点で、最後に確定
ボタン等クリックで一括更新という事になるのですが、そうすると、DB更新す
るためには、全て削除して、編集後のデータを新規追加という流れになりません
でしょうか?しかしできればこの方法は避けたいです。

 そう考えると、やはりこばさんが教えて下さったように、ストアドで処理する
しかないのでしょうか。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-06-01 15:27
行が変わったらDB更新処理をして Okボタン押したらコミットというのもありますが、
この場合 ごりごりとコーディングしないとだめかな
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-01 15:41
データセットで普通にデータバインディングすれば、ほぼOKなのでわ?
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-06-01 17:17
 七味唐辛子さん、返信ありがとうございます。

>行が変わったらDB更新処理をして Okボタン押したらコミットというのもあります>が、この場合 ごりごりとコーディングしないとだめかな

 ご指摘頂いた方法も考えたのですが、長時間Commitせずにいるのがちょっと厳しいかもしれません。使い方によっては、長時間開きっぱなしになる可能性がある画面のようなのです。

うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-06-01 17:21
 R・田中一郎さん、返信ありがとうございます。

>データセットで普通にデータバインディングすれば、ほぼOKなのでわ?

 知識不足申し訳ありません。DataSetでBindすると、DBに実更新されるということでしょうか?もしそうなら是非そのようにしたいと思います。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-01 17:30
引用:

うたさんの書き込み (2006-06-01 17:21) より:
 R・田中一郎さん、返信ありがとうございます。

>データセットで普通にデータバインディングすれば、ほぼOKなのでわ?

 知識不足申し訳ありません。DataSetでBindすると、DBに実更新されるということでしょうか?もしそうなら是非そのようにしたいと思います。


僕も最近知ったのですが、実はそうらしいです。
動作は比較的簡単に確認できるのて、試しにやってみると良いですよ(^▽^)

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