- - PR -
DataGridViewでレコード更新時に更新者名を記録したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-16 11:08
お世話になっております。DataGridViewで一行(レコード)に変更を加えて他のレコードへ移動するときや、保存して閉じるときに、「登録者名」というフィールドにユーザー名を記録したいと思い、次のように書いて見ましたが、イベントが無限に呼ばれているような感じでうまくいきませんでした。
具体的にはformがNewされるタイミングで無限ループとか再起呼び出しが多いとかと言われます。 CellValueChangedというイベントに書くのがまずいのでしょうか。。 Private Sub T_PhoneDataGridView_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles T_PhoneDataGridView.CellValueChanged '更新ユーザーと時刻をコントロールにセット Me.T_PhoneDataGridView.Rows(e.RowIndex).Cells("dgv_p_upuser").Value = System.Environment.UserName Me.T_PhoneDataGridView.Rows(e.RowIndex).Cells("dgv_p_update").Value = Now() End Sub よろしくご教授賜りたく存します。 | ||||||||
|
投稿日時: 2007-04-16 11:20
CellValueChanged イベントは Cell の値が変更されたときに起きるイ ベントですよね。
…えーと、Cell の値が変更されていませんか? ここでコンピュータの動き CellValueChanged イベントがキタ! ↓ 更新ユーザーと時刻をセットするぞ! ↓ お、Cell が変更されているな。じゃあ CellValueChanged イベントを発生させなくちゃ! ↓ 一番上に戻る という感じなのではないかと。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2007-04-16 11:32
ありがとうございます。
そうなんです。。なので適切なイベントを今全部説明を見ているのですが、やはり見つかりません。。 どのイベントを呼ぶのが正しいのでしょうか。。 イベント名をご教授いただけると大変助かります! | ||||||||
|
投稿日時: 2007-04-16 11:35
DataGridViewでレコードの新規登録者名をDBに記録したい初心者です。。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37894&forum=7 | ||||||||
|
投稿日時: 2007-04-16 11:44
CellValueChanged のハンドラの中で
変更されたセル(e.ColumnIndex で判定)が 「更新ユーザー」とか「時刻」だったら処理しないようにすればどうでしょう? | ||||||||
|
投稿日時: 2007-04-16 13:14
KI様ありがとうございます。
『「更新ユーザー」とか「時刻」以外だったら処理しないように・・・』ということでよろしかったでしょうか。 それもなるほどです。ありがとうございます。 他にも RowValidated というイベントに書いてみたりしましたが、レコード間でカーソルを移動させただけで「更新ユーザー」と「時刻」が変わってしまいました。 Accessで言う「レコード更新前」に相当するイベントがあればよいのですが。。 このようなとき、皆様はどうされていますか?保存処理の中でSQL文で放り込まれますでしょうか。 | ||||||||
|
投稿日時: 2007-04-16 14:51
データベースのテーブルに更新者・時刻のカラムがあって、
レコードを更新するときに、その列を更新したいというお話でよろしいでしょうか? 更新者はともかく時刻に関しては、どのタイミングで取得するかによって値が変わります。 そこは意識していらっしゃいますか? たぶん以下の3種類くらいが考えられると思うのですが、どの時刻で更新したいのでしょうか? (1) 保存するとき (2) セルの内容が変更されたとき (3) 行の編集が確定されたとき (2)と(3)の違いについて補足しておきます。 (2)はセルの内容が変更されたときに発生します。 (3)はセルの内容が変更された後、カーソルが他の行に移動するなどして 行の編集が確定されたときに発生します。 実装方法を検討する前に、ここを明確にする必要があると思います。 | ||||||||
|
投稿日時: 2007-04-16 15:00
KI様、ご検討いただき、まことにありがとうございます。
(3)を実現したいと思っております。 |