2009-08-25 11 views
0

私はsqlデータベースを持ち、そこにサンプルテーブル用のデータセットを作成しています。vb.netの挿入後に更新された行数がデータセットに反映されるべきとき

データセットはHotelDataSet2であり、挿入するデータテーブルアダプタはVarious_itemsTableAdapterです。

MsgBox(HotelDataSet2.various_items.Rows.Count) 
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked) 
MsgBox(HotelDataSet2.various_items.Rows.Count) 

私はこの

MsgBox(HotelDataSet2.various_items.Rows.Count) 
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked) 
Various_itemsTableAdapter.Fill(HotelDataSet2.various_items) 
MsgBox(HotelDataSet2.various_items.Rows.Count) 

を実行した場合、それは新しいカウントが古いものの1であることを示して前とinserting..But後これは、常に、同じカウントを反映しています。だから私はいつも私はテーブルアダプタを介してテーブルにいくつかのデータを変更すると私はいつもデータセットを補充する必要があると結論?それはどうやって役に立つの?

+0

回答、これは、あなたが見るより明らか –

答えて

1

これは間違った方法です。変更するにはDataSetを使用する必要があります(つまり、テーブルにDataRowを作成してテーブルに挿入する)、のDataTableTableAdapterに渡して、データベースに変更を保存する必要があります。 TableAdapter

tableAdapter.Update(dataSetName); 

呼び出しInsert機能にUpdate関数を呼び出すのみ直接挿入し、そのデータベース自体のテーブルにデータ。データのローカルコピー(DataSetなど)には何の影響もありません。

MsgBoxのような言語固有の機能を使用しないようにしてください。代わりに、メッセージボックスを表示するには、MessageBox.Show(...)を呼び出してみてください。それは言語に依存しません。

を明確にするために、編集は、これを行うための適切な方法は、新しいDataRowを作成する新しい値でその列を移入、適切なテーブルにDataRowが、その後、TableAdapterにテーブルを渡すことを追加することですUpdate機能を使用します。

例えば、私はそれらの値を持つ行を挿入するには...

A DataSet named myDataSet 
A DataTable in myDataSet called MyTable 
A TableAdapter for MyTable called myTableAdapter 
Two columns in that table, FirstName and LastName 
Two TextBoxes called txtFirstName and txtLastName 

を持って、私はこれを行うだろう:更新

DataRow row = myDataSet.MyTable.NewRow(); // creates a new row with the correct columns 

row["FirstName"] = txtFirstName.Text; 
row["LastName"] = txtLastName.Text; 

myDataSet.MyTable.Rows.Add(row); // adds the new row to the in-memory table 

myTableAdapter.Update(myDataSet); // persists all of the changes to the DataSet 
+0

する必要があります私はリストボックス、リストボックス、チェックボックス、コンボのようなテキストボックスと他のフォームelemtnsを持っています。その値はユーザーが入力してデータベースに挿入するようになっていますが、tableadapter.insertから離れて教えてください。 –

+0

ありがとう、今それは理にかなっています。 myTableAdapter.Update(myDataSet)を実行すると、データベースに反映されます。私は疑問が多く、相談したいと思っていましたが、どこに行きますか、電子メールかチャットですか? –

+0

はい、Updateコマンドに渡すと、その時点でデータベースに変更が加えられます。相談に関しては、Stack Overflowで質問をここに投稿することで、より良い回答を得ることができます。私よりも賢くここに多くの人がいます。いつでも私ができるより速くあなたを助けることができる人がいます。あなたの問題が解決された場合、この回答を「受け入れられる」とマークしても構いませんが、私は感謝します。ありがとう! –

関連する問題