ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

VisualBasic2005です。
例えばDataGridViewの3列目にコードが入力されるとします。
その列のコードには重複入力をさせたくないのです。

重複チェックをするのは、そのセルの入力が確定したときでも、
特定のボタンが押されたときでもかまわないので、
チェックする方法はないでしょうか?

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そのDataGridViewはDataTableをバインドしてますか?


もしそうなら、DataTableの方で重複をさせたくない列を主キーに設定すれば、重複値を入力したときエラーがでるようになります。
主キーの設定の仕方は例えば
'dtはDataTable
dt.PrimaryKey = New DataColumn() {dt.Columns(2)}
    • good
    • 1
この回答へのお礼

さっそくの回答ありがとうございます。
今回のDataGridViewにはDataTableをバインドしておりません。

ですので、DataGridViewのCellValidatingで
入力された値と、既に入力されている値を
For文を使って比べました。

効率的には良くないと思いますが、
一応出来ました。

もしDataTableをバインドしたときには、上記方法を利用させていただきます。

お礼日時:2007/07/26 12:37

ArrayListクラスなどの配列を扱うクラスに Containsメソッドがあります


これでチェックしてみてはいかがでしょう

フォームクラスの変数などで
  Dim arCheck as New ArrayList
と初期化しておき

データの読み込み時点で
  arCheck.Add( DatatItem )
として既存のデータを配列に保存します

Validatingイベントで
  if arCheck.Contains( 検査対象データ ) = True then
    e.Cancel = True
  else
    arCheck.Add( 検査対象データ )
  emnd if

といった具合でしょう
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

QVB.NETのDataGridで、選択行の特定の列の内容を取得したい

タイトルにあるとおり、DataGridを使用している場合、実行時に選択された行の特定の列の内容を取得するにはどのようにすればよいのでしょうか?

DataGridは複雑で、まだよくわかっていません。
よろしくお願いします。

Aベストアンサー

選択している行番号は、dataGrid1.CurrentRowIndexでわかります。
行、列を指定して各セルにアクセスするには、
dataGrid1(行番号,列番号)でいいので
dataGrid1(dataGrid1.CurrentRowIndex,列番号)
で選択されている行の特定の列の内容を取得できます。
註:番号は、0始まり

Q配列の中に重複文字列があるか否かをチェックしたいのですが、アルゴリズムを教えてください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテキストをExcelに貼り付ける。
そして、Excelのフィルタ機能で重複文字列を排除。
その後、重複文字列を排除した文字列を保存したものをテキストファイルに保存する。
それをプログラムで読み込んで配列内に格納してから次の処理を続ける

といった、効率の悪い方法をとっています。
そこで、プログラム内で処理する方法を次のように考えてみました。

~思いつく方法~
dim DataArrayTemp[10000]
for i = 1 to 10000
flag = 0
// 重複文字がないかチェック
for j = i+1 to 10000
ifb Data_Array[i] = Data_Array[j] then
// 重複があった場合はflag = 1にする
flag = 1
break// 内ループ脱出
endif
next
// flag = 0であれば重複がない項目 (flag = 1のときは、重複がある)
ifb flag = 0 then
DataArrayTemp[temp_i] = Data_Array[i]
temp_i = temp_i + 1
endif
next

これは、力技なので配列内の量が多くなると計算時間がかかってしまいます。

ですので、重複しない文字列だけを抽出する効率の良い方法がありましたらどなたか知恵を貸してください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテ...続きを読む

Aベストアンサー

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイックソートならO(N logN)の計算量になりますが,ハッシュを使えば(少なくとも見かけ上の)計算量はO(N)で済みます。

ただ123456zennsinnさんの使っている言語(BASIC系?)にハッシュがあるかどうかは? VB.NETだとHashtableクラスとかありそうですが。

http://www.atmarkit.co.jp/fdotnet/dotnettips/125hashtable/hashtable.html

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイッ...続きを読む

QDataGridViewの、選択されている行を取り出したい

いつもお世話になっております。

DataGridViewに関して、選択されているレコードをDataRow型で別フォームに渡してから、各項目をテキストボックスに表示したいのですがうまくいきません(DataRow型にこだわっているわけではないのですが、レコード1件丸ごと取得する型を他に知らないので例として挙げました)。

DataGridViewのCurrentRowプロパティや、SelectedRows(0)をDataRow型に代入する試みをしましたが、型変換できませんでした。

DataGridViewで選択されているレコード一件まるごと変数に渡す方法というのはあるのでしょうか?

ちなみに、SelectionModeはSelectFullRowに、MultiSelectはFalseにしてあります。

ご存知の方ご教授いただけると助かります。
よろしくお願いします。

Aベストアンサー

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data.DataRow dr = (System.Data.DataRow)drv.Row;

[VB2005]
Dim dgr As System.Windows.Forms.DataGridViewRow = Me.DataGridView1.CurrentRow
Dim drv As System.Data.DataRowView = CType(dgr.DataBoundItem, System.Data.DataRowView)
Dim dr As System.Data.DataRow = CType(drv.Row, System.Data.DataRow)

※最後のキャストを変更すれば、型付データセットにも対応可能のはずです

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data...続きを読む

QDataGridViewのチェックボックスのON、OFFの判定方法

お世話になります。ご協力お願いします。
環境:VS2008 .Net FrameWork3.5
言語:C#

質問内容:ボタンを押下したら、DataGridViewの列に設定したチェックボックスのON,OFFを判定して処理を行いたい。
現状以下の方法で実現は出来ていますが、とても回りくどい方法になっています。
正しい処理を教えて頂けないでしょうか。

1.DataGridViewにて、列にチェックボックスを設けている。
2.truevaluesプロパティにtrueをセットしている。

ボタンを押下したらチェックボックスのON、OFFを判定する為に、DataGridViewの行を
ループさせて判定させています。

for(int i=0;i < DataGridView.Count;i++){
___if((string)DataGridView.Rows[i].Columns[0].values == "true")
___{
______処理
___}
}

お願い致します。

Aベストアンサー

 こんばんは。

 正しいかどうかは断言出来ませんが、要はチェックボックスの「on, off」を確認しながらループするのが非効率的なので、ループ回数を「on」の個数だけに留めたいと言う事でしょうか。

 でしたら、以下URLに記載されているイベントハンドラを応用して、
 http://dobon.net/vb/dotnet/datagridview/datagridviewcheckboxcolumn.html

 セルのチェックボックスが「on, off」された瞬間に、セルのROW番号をハッシュテーブルに向かって「登録、解除」をしていけば、結果として「on」になっているセルのROW番号だけを保持する事になります。

 「Dictionaryジェネリッククラス」
 http://msdn.microsoft.com/ja-jp/library/xfhwa508(VS.80).aspx

 以下参考程度に。

//ハッシュテーブル(trueのROW番号だけを記録するDictionary<Key, Value>だが、今回の事例では両方とも同じROW番号を入れる)
private Dictionary<int, int> boolMapper;

private void Form1_Load(object sender, EventArgs e)
{
//作成
this.boolMapper = new Dictionary<int, int>();
}

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dataGridView1.CurrentCellAddress.X == 0 && this.dataGridView1.IsCurrentCellDirty)
{
this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}

//チェックボタンが「on, off」された瞬間に呼ばれるイベントハンドラ
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && this.dataGridView1.Columns[e.ColumnIndex].ValueType == typeof(bool))
{
//チェックボタンが「on」になったのでハッシュテーブルに登録
if ((bool)this.dataGridView1[e.ColumnIndex, e.RowIndex].Value == true)
{
this.boolMapper.Add(e.RowIndex, e.RowIndex);
}
//チェックボタンが「off」になったのでハッシュテーブルから除外
else
{
this.boolMapper.Remove(e.RowIndex);
}
}
}

//ボタン1を押した時に呼ばれるイベントハンドラ
private void button1_Click(object sender, EventArgs e)
{
//ハッシュテーブルの要素個数分だけ回転する
foreach(KeyValuePair<int, int> kvp in this.boolMapper)
{
//ココで何かする「kvp.Value / kvp.Key」どちらにも同じ数字が入っているのでどちらを使用するかは問わない
this.dataGridView1[0, kvp.Value];
}
}

 こんばんは。

 正しいかどうかは断言出来ませんが、要はチェックボックスの「on, off」を確認しながらループするのが非効率的なので、ループ回数を「on」の個数だけに留めたいと言う事でしょうか。

 でしたら、以下URLに記載されているイベントハンドラを応用して、
 http://dobon.net/vb/dotnet/datagridview/datagridviewcheckboxcolumn.html

 セルのチェックボックスが「on, off」された瞬間に、セルのROW番号をハッシュテーブルに向かって「登録、解除」をしていけば、結果として「on」になっ...続きを読む

QDataGridViewに空白がある場合はエラーにしたい

よろしくお願いします。VB2005とAccess2005で開発しています。
Form上にDataGridViewを配置しています。
列の一番右端の入力をし終えて、次の新しい行に移動する前に、入力し終えた行に空白のセルがあったらエラーを返したい(空白があります、メッセージを表示したい)のですが、どのような処理を書いたらよいのかわからず悩んでいます。
ちなみにこのDataGridViewはエンターキーで横移動するようなDataGridViewを継承したユーザーコントロールです。
参考サイト→http://www.vbstation.net/tips/inherits_control.htm
一番右端の列を入力し終えたときにどのような処理を行えば良いか教えてください。

Aベストアンサー

下の様な関数を用意してみてはいかがでしょうか
最もセル内の空白は削除するコードも追加しなくてはいけないかもしれませんが・・・
Const COLUMN As Integer = XXXX '列数

Private Function CheckDGV(ByVal i As Integer) As Boolean

For j As Integer = 0 To COLUMN

If (DataGridView1(i, j).Value.ToString = "") Then
Return False
End If


Next

Return True
End Function
End Class

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QVB.NET2005 DataGridViewでレコードを絞り込んで表示

Form1のTextboxより入力した数字を元にForm2のload時にoracleDBをselectしDataGridviewのテーブルの中に作成した値と一致するものを絞り込んで表示したいと考えております。
メニューのプロジェクトからDataSetを選択し、必要なDBを選択しTableadapter等も利用しています。
DBから読み込んだものをそのまま表示するだけという事は出来ました。
テキストやネットを調べながら色々試してみましたが、うまくいかず煮詰まっています。
お力を貸してください。よろしくお願いします。

Aベストアンサー

お世話になります。

TableAdapter から取ってきた DataTable を元に
DataView を使って絞り込めばよいのでは?

Dim dt As DataTable = New DataTable
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("FRUIT", GetType(String))

dt.Rows.Add(New Object() {1, "りんご"})
dt.Rows.Add(New Object() {2, "もも"})
dt.Rows.Add(New Object() {3, "かき"})
dt.Rows.Add(New Object() {4, "みかん"})

Dim dv As DataView = New DataView(dt)
dv.RowFilter = "FRUIT LIKE '%ん%'" '絞り込み

Me.DataGridView1.DataSource = dt '全件
Me.DataGridView2.DataSource = dv '絞り込まれた結果(りんごとみかん)

参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/129dgfilter/dgfilter.html

お世話になります。

TableAdapter から取ってきた DataTable を元に
DataView を使って絞り込めばよいのでは?

Dim dt As DataTable = New DataTable
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("FRUIT", GetType(String))

dt.Rows.Add(New Object() {1, "りんご"})
dt.Rows.Add(New Object() {2, "もも"})
dt.Rows.Add(New Object() {3, "かき"})
dt.Rows.Add(New Object() {4, "みかん"})

Dim dv As DataView = New DataView(dt)
dv.RowFilter = "FRUIT LIKE '%ん%'" '絞り込み...続きを読む

QDataGridViewで変更した値を反映させたい。

VB2005、SqlServer2005環境です。

デザイナ上で、DataTableをドラッグしてやると、自動的に
バインドされたDataGridViewが出てくれるので、その方法で
DataGridViewを1つ設置しました。

このDataGridViewの表の値を変えた時、それを実際のDBのテーブルにも
反映させたいなと思ってます。
これを実現するための方法を教えていただけないでしょうか?
バインドされているので、保存できればそのまま更新されるような
イメージなのですが…その方法がわかりません。

宜しくお願いします。

Aベストアンサー

ビューからだとUpdateやDeleteなど元のテーブル対する操作は自動生成されないようです

フォームに張り付いているデータセットにクエリを追加して
テーブルを操作できるようにします
表示されているテーブルアダプタをアクティブにして データ > 追加 > Queryを実行
SQLステートメントを使用するにチェック で次へ
UPDATE で次へ
ここで クエリビルダ もしくは 直接SQLを編集し『完了』をクリック

フォームに更新用ボタンを配置
そのクリックイベントに

dim row as DataRow
for each row in DS.DaTable.Rows
  if row.RowState = DRowState.Modified then
    TableAdapter.UpdateQuery( Row("Name"), Row("ID") )
  end if
next
といった具合で更新を掛けます
# 変数名などは適宜修正してください
# DS.DaTable.Rows、TableAdapter、Row("Name"), Row("ID")などです

ビューからだとUpdateやDeleteなど元のテーブル対する操作は自動生成されないようです

フォームに張り付いているデータセットにクエリを追加して
テーブルを操作できるようにします
表示されているテーブルアダプタをアクティブにして データ > 追加 > Queryを実行
SQLステートメントを使用するにチェック で次へ
UPDATE で次へ
ここで クエリビルダ もしくは 直接SQLを編集し『完了』をクリック

フォームに更新用ボタンを配置
そのクリックイベントに

dim row as DataRow
for each row in DS.Da...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング