• ベストアンサー

VB2010 DataSet Dataの初期化

VB2010のDataGridViewを使ってアドレス帳を作ってます。 登録データを初期化したいのですが、次のようにコードを書いても、初期化されません。エラーも出ません。DataSetを初期化して、保存する方法をとろうとしています。 DataSet.登録.clear() 登録TableAdapter.Update(DataSet.登録) お手上げの状況ですので、対処方法をご存知の方はご教授をお願いします。

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

  • ベストアンサー
回答No.1

Clearは単純にDataTableをクリアするだけです。 DataTableは元のデータベースとまったく関係ありません。 Clearした後のものをTableAdapter.Updateに渡しても, TableAdapterはDataTableの中身がないため,なにも処理を行いません。 データベースのデータを削除するには,DataTable中のDataRowのDeleteメソッドを呼び出して状態をDeletedにしてから, TableAdapterのUpdateメソッドを呼び出し,DataRowに対応するデータにDELETE文を発行してもらいます。

totti1800
質問者

お礼

早急に、ご回答をいただきましてありがとうございます。 DataRowのDeleteについて学習してみます。 参考になりました。

関連するQ&A

  • VB2010 DataSet 更新

    VB2010で社員名簿を作成しています。Form1にDataGridViewを使って名簿を作成し、Form2で更新のボタンを押します。 次のようにプログラムを作成しましたが、更新できません。エラーも出ません。 DataRowをdeleteで消して、それを保存する方法です。 どこが悪いのでしょうか。ご存知の方はご教授いただけませんでしょうか。 ’新年度につきForm1の社員名簿のDATAを初期化する Dim j As Integer For j = 0 To Form1.DataGridView1.Rows.Count - 1 Form1.DataSet1.社員名簿.Rows(j).Delete() Next ’ 初期化した社員名簿を保存する Form1.社員名簿TableAdapter1.Update(Form1.DataSet1.社員名簿)

  • DataSetについて

    下記のようなDataSetを使用した処理質問致します。 TableAdapterのデザイン時にてSELECTCommandで SELECT 'AA' AS 名前 FROM M_マスタ と、記述してDataGridView1に反映しようとしても実際にテーブルに入っているデータがそのまま表示されてしまいます。 このように固定の値を取得する方法はどのようにしたらよろしいのでしょうか?そもそもできないのでしょうか? Dim ds As New DataSet1 Dim Ta As New DataSet1TableAdapters.M_マスタTableAdapter 'テーブルアダプタを利用してデータを読み込む Ta.Fill(ds.M_マスタ) Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "M_マスタ"

  • DataSetの使い方が分らず困っています

    VB2008とADO.NETを勉強中の初心者です。 DataSetに読み込んであるデ-タをクリアしたいと思ってるのですが、方法が分らず困っています。 最終目標のプログラムでは、製品のコ-ドを指定して、その製品を造るために必要な部品・材料を買うプログラムを作りたいと思っています。 そのための勉強として、Form1のTextBoxから製品コ-ドを入力して、"Seihinkousei"に登録してある部品・材料を読み込むプログラムを作成しました。 Dim cn As New OleDbConnection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\MAPICAS\MAPICAS-S.mdb" Dim da As OleDbDataAdapter 'DataAdapterの作成 da = New OleDbDataAdapter("SELECT * FROM Seihinkousei WHERE Se_Hinban = '" & TextBox1.Text & "'", cn) da.Fill(DataSet1, "Seihinkousei") DataGridView1.DataSource = DataSet1.Tables("Seihinkousei") 複数回、TextBoxから製品コ-ドを入力してDataGridViewに表示してみると、いままで読み込んでデ-タが、その都度すべて表示されてしまいます。 最終目標のプログラムでは、読込の処理をFunctionにして、どのPrivate SubからでもDataSetの内容を参照したいと思っています。 そのため、DataSetを使い、且つ前回読み込んで内容はクリアして、その都度指定した製品の部品・材料だけの情報にしたいと思っています。 ご教授よろしくお願いします。

  • VisualC#でデザイナでくっつけたDataSetを使う方法

    VisualC#2005にて、DataGridViewがバインドするものとしてDataSetを一緒にデザイナに貼り付けたのですが、コードをみるともともとのDataSetクラスを継承して独自のプロジェクト名をつけたDataSetクラスがインスタンス化されています。このDataSetオブジェクトは一番最初のForm_Loadのときにデータを自動的に読み込んでDataGridViewにアクセスしてくれるんですが、その後も使用したいのですが、アクセスするには普通のDataSetオブジェクトとまったく同じ方法(メソッドなど)でアクセスすればよいのですか? 当方、C#初めてなので、初歩的な質問かもしれませんが、よろしくお願いします。

  • [VB.NET] DataSetをRDBのように使うには?

    VB.NET において、DataSetをRDBソフトのように使う方法を 探していました。 DataSet内の1つのDataTableにあるSelectメソッドを実行すると、 DataTable内の特定のレコードを抽出することができることは わかっています。 しかし、複数のDataTable間でリレーションを組んで、 Joinを実現したいのですが、どのようにしたら実現できるのでしょうか? かなり初歩的な内容かもしれませんが、 何卒、ご教授頂ければと思います。

  • VB.netのTableAdapter.Inser

    VB.netについて質問です。 TableAdapter.InsertQueryについて質問になります。 ・データセットに紐づいているDataGridViewからTableAdapter.InsertQueryを利用してDBに登録したい。 ・DBに登録されているIDcodeデータとDataGridViewのIDcodeデータを比較し、DataGridViewのIDcode重複データは除いてDBに登録したい。 (1)現在のコードですと同じものを再度登録すると主キーエラーが出てしまいます。 DBではIDcodeを主キーにしております。 (2)SQLでWHERE NOT EXISTS文をいれている(重複ははじいているつもり)のですがダメです。 皆様のお知恵をお貸しください。 【DBのカラム】 date, IDcode 【現在のコード】 If TableDataGridView.RowCount = 1 Then MsgBox("登録するデータがありません") Else For Each dr As DataRow In DataSet1.Tables(0).Rows Me.TableTableAdapter.InsertQuery(dr("date"), dr("IDcode")) Next Me.Close() End If 【InsertQuery(@date, @IDcode)の中身】 INSERT INTO [dbo].[Table] ([date], [IDcode]) VALUES (@date, @IDcode); SELECT date, IDcode FROM [dbo].[Table] WHERE NOT EXISTS(SELECT * FROM [dbo].[Table] WHERE [IDcode] = @IDcode) order by IDcode どうぞよろしくお願いいたします。

  • VB2010 Dataset内のDB接続先変更

    VB2010のDatasetについてご質問があります。 Datasetにデータベースエクスプローラを使用してデータテーブルを作成し、Fillメソッドを使用してテーブルの参照を行っております。今回、サーバーの入れ替えを行うことになり、データベースの内容は全く変わらないのですが、コンピュータ名とIPアドレスが変更になるということで、今までのDatasetの接続先だけを変更するにはどうしたらいいのだ?で悩んでおります。 さらに、今回みたいなケースは今後もあると思うので、接続先文字列をいつでも変更できるようiniファイル等で外部から変更できるようにしたいと思っております。 ご教授よろしくお願い致します。

  • VB2005 DataGrdViewで、SQL文記述

    VB6からVB2005に切り替える作業をしています。 DataGridViewにMDBファイルの中身を表示させることは出来ました。 DataSet,BindingSourceを用いています。 コードの記述で、SQLの文章を変更させたいのです。 WHERE文の記述を変えたりしたいのですが。 DataSourceにSQL文を記入することが出来ません。 DataSourceには記述できないのでしょうか? それとも、根本的に間違っているのでしょうか。 よろしくお願いいたします。

  • データベースを更新したい(VB2008)

    VB2008でつくったアプリケーションでAccessのデータを更新したいです。DataGridView1でデータを表示させ更新ボタン押下時にデータ(Accessのテーブル)を更新したいです。 DataGridView1でデータを表示することはできましたが、「更新」押下に更新されません。 Accessのテーブル名は「01データです」 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me._01データTableAdapter.Fill(Me.年賀状DataSet._01データ) End Sub Private Sub 更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 更新.Click With DataGridView1 .Update()     End With     MsgBox("更新しました") End Sub

  • DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)

    VB.NET2003でDataSetにテーブルを作成して、データベース(SQLServer2000)にあるテーブルを引っ張ってきて、そのDataSetのテーブルをDataGridに渡して、表示までは出来たのですが、DataGridの中身を変更した後、違うDataSetに保存する方法が分かりません。どなたか教えてください。

専門家に質問してみよう