• ベストアンサー

データグリッドビューでの入力値チェックについて

VB2008の環境です。 元々VB6を使用していて1週間前からVB.NETを勉強中です。 現在データグリッドビューを用いてデータを入力できるソフトを作成中です。 編集中の行から移動した時に、移動前の行の入力した項目について、上限値を超えていないか?ブランクではないか?他の行と重複した値になっていないか?などの確認を行いたいと思っています。 上記のチェックの内、他の行との重複チェックを行おうとすると、新規行を追加した時に、新規行に値が入っていないためエラーとなってしまいます。 どなたか行単位のデータチェックで参考になりそうなサンプルソースをご存知ないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • korin_
  • ベストアンサー率69% (46/66)
回答No.1

こんにちは。 現在はどのイベントで処理なさっているのでしょうか? 行単位の入力チェックでしたら、RowValidatingイベントで行うと出来ると思います。 新規行は DataGridViewRow.IsNewRow プロパティで判断出来ますので、True の場合はチェックの対象から外されてはいかがでしょうか。 以下は適当に書いたものですが、ご参考になれば。 -------------------------------------------------------- Private Sub DataGridView1_RowValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating Dim dgv As DataGridView = Me.DataGridView1 Dim row As DataGridViewRow = dgv.Rows(e.RowIndex) For Each r As DataGridViewRow In dgv.Rows If Not r.IsNewRow Then If row.Index <> r.Index Then If r.Cells(0).Value.ToString() = row.Cells(0).Value.ToString() Then MessageBox.Show("重複エラー") e.Cancel = True Exit For End If End If End If Next End Sub

sutonarini
質問者

お礼

返事が遅くなって申し訳ありません。 RowValidatingイベントまではなんとか自力で見つけたのですが、IsNewRowプロパティまでは探せませんでした。勉強になりました。 VB.NETは、VB6に比べてオブジェクトのカスタマイズの幅が広がっている分、イベントやプロパティが大幅に増えていますね。 覚えるのや調べるのが大変です。

関連するQ&A

  • データグリッドビューの表示時

    VB.NET(VS2010)で開発しています。 データグリッドビューで複数行のデータを表示する際に1レコードずつ フィールド(カラム?)の値を確認して、それによってデータグリッドビューの あるフィールドを非表示にしたり罫線を消したり又は太字にしたりすることは 可能でしょうか?

  • データグリッドビューの行にチェックボックス

    VB2010で、データグリッドビューの行にチェックボックスを入れたいのです。 DataGridViewCheckBoxCellでできるかなと思っているのですが、 下記のコードではチェックボックス行が追加されません。 どう修正すればよいでしょうか。 ご存知の方教えてください。よろしくお願いします。 Dim CB As New DataGridViewCheckBoxCell Me.DataGridView1.Rows.Add(CB)

  • VB2005のデータグリッドビューとデータテーブルについて

    いつもお世話になっています。 独学でVBの勉強をしているのですが、 どうしてもわからないことがあるので教えて下さい。 現在行なおうとしていることは、 mdbからデータテーブルにレコードを取得して、 それをデータグリッドビューに設定し、 値の一部をコードで変更するということです。 DataGridView1.DataSource = DataTable1 とすれば、データテーブルのデータを データグリッドビューにて表示させることができるのですが、 コードでデータグリッドビューの値を変更すると、 データテーブルの値も一緒に変更されてしまうんです。 DataGridView1.DataSource = DataTable1.Clone とすると、今度はレコードが表示されなくなってしまって・・・ 何か良い方法がありましたら、教えて下さい。 よろしくお願いします。

  • ASP.NET フォーム上で入力された値のチェック

    お世話になります。 ASP.NET フォーム上でユーザーに入力させた値とマスタの値とを 一行ずつチェックする方法についてです。 (複数行、値を入力する行を用意しています) 全ての行の全ての値を入力させてからチェックボタンを押す形ではなく 1行づつ入力するルールとし、入力中の行から違う行に移動した時(フォーカスが遷移した時、 若しくは異なる行IDが取得されたとき)に 取得していた行IDに入力された値をマスタ値とのチェックをかけ正否を その行に表示したいのですが上手くいきません。 値の正否判断も行ごとです。 (かなり試行錯誤はしてるのですが・・・ボタンを押させるのではなく、 行移動時にチェックをどうしてもかけたい要望があります) 行のIDとマスタ情報は取得できているようですが フォームで入力された(前の行の)値を取得できていないようです。 どなたかご教示の程よろしくお願い致します。

  • エクセルの「入力規則」を用いての重複チェックについて

    エクセルの「入力規則」を用いての重複チェックについて エクセルの「入力規則」でcountif関数を使い、重複チェックをしながら 入力をおこなっております。 重複の時メッセージがでるのですが、これに加えてどこと同じなのか その行をセレクトした状態など、該当するデータが分かるようにすることは 可能でしょうか? 何か方法がございましたら、ご助力をお願いいたします。

  • 入力値チェック

    VBにて、テキストフィールドに入力した値を チェックするプログラムを作りたく、記載を致しました。 わからない点として、 (1) 値を入れ終わった直後に入力チェックが入るようにする コードをどうかけばいいのか? (2) 入力チェックは、"1~5"の値入力のみを受付ける。 それ以外は、"入力を受け付けない"というメッセージを 促し、テキストフィールドの値を空にする。 の2点です。 このチェック処理を作るための手順についてお伺いしたく 記載を致しました。 ご教授の程お願い致します。

  • Excel 2007 重複データのチェックについて

    Excel 2007 重複データのチェックについて A列にあるデータ(約100件)で重複している値がある 行についてB列にフラグをつけます。 やりたいことはどの行とどの行が重複しているのかを すぐに分るようにしたいです。 添付画像のように重複している行に番号をつけていくことは可能でしょうか。 番号は1から順番に増えていきます。 自分は下記を考えましたが、これでは重複している行に「重複データ」と入る だけでわかりづらいです。 =IF(COUNTIF($A$2:A2,A2)>1,”重複データ”,”○”) よろしくお願いいたします。

  • 入力チェックの方法

    入力フォームに入力されたデータのチェック方法ですが、どういう方法で行うのが一番良い方法なのでしょうか? 今までは、『[保存して閉じる]ボタンを押された時に、入力チェックのメソッドを実行する』しかやっていませんでした。 これだと1つのメソッドでまとめてチェックできるので見やすくメンテしやすくて良かったのですが、この方法が良いのか少し疑問もあります。 いろいろ検索してみると人それぞれやり方が違うようですが、項目が多いと結構大変ですよね。 KeyPressイベントで入力規制し、Leaveイベントで入力データのチェック、コピペも出来ないようにして…、入力エラーがあるとボタンは押させない…等、厳密に行うとかなりコーディングが長くなりそうなんですが…(汗 どういう方法が一番良いのでしょうか?これが正解!という物は無いと思いますが他にどういう方法があるのか知りたいのです。 おすすめの方法でも何でも構いません。メリット・デメリットも書いていただけるとうれしいです。 vb2005,2008を使用しております。

  • VBAでの入力チェックをするには?

    VBAで入力チェックをしたいんですけど、まだVBAがよくわかりません。 わかるかたお願いします。 5行ずつデータを貼っていくんですけど時々貼り付け箇所を間違えます。 それを防ぎたいのです。 貼り付け始め箇所がB100とします。 そこへ5行ごと貼り付けていきます。 私が調べてみてわかったことはXLDOWNというので一番下のセルを見つけれるしか分かっていません。 B100からどーんどーん貼っていき例えばB500からB505の間が抜け落ちていたときB495の値をその間へ貼り付け、またB2300からB2305の間が抜けていたらB2295の値をその間へ貼り付けるといったことを繰り返すことはできますでおうか?

  • VB6 重複チェックについて

    お世話になります。 次の処理をVisual Basic6.0で教えてください。 1.Text1にキー入力した値をコマンドボタンクリックすると、Text1の値を保存します。 2.次にText1に新たに入力してコマンドボタンクリックで前項で保存した値と重複して   いないかチェックして重複無しならText1の値を保存します。 3.Text1に新たに入力して・・・・重複チェックして・・・・ といった具合に保存する値と重複チェックする対象の値がどんどん増えていきます。 さすがに10,000件はいかないですが。 保存先は読み書き込みの時間も考慮してVB内のTextBOXが第1希望、外部のtxtファイルやcsvファイルは第2希望としたいです。 If Text1=保存値 Then  処理 else  処理 End If 保存値をText2として行いましたが、完全一致でないとダメでした。 入力値:保存値=1:n(入力値が複数の保存値と重複したかどうか)が知りたいです! お手数おかけしますが、何卒よろしくお願いします。

専門家に質問してみよう