none
データグリッドビューに入力されたデータをデータセットを通して更新したい RRS feed

  • 質問

  •  <使用環境>

    windowsXP

    VB2005 EE

    こんにちは。今回もよろしくお願いします。

     

    現在、windowsフォーム上に

    AddressTextBox (ディレクトリパス用であり、値は任意に入力可能)

    YearComboBox (年度用:例えば平成19年度) 

    TextBox1     (データ名用)

    の3つの入力データから、MDBデータベースを作り出すようにしています。その際テーブル名はmeisai_masterとしています。

    Dim cat As Object

    cat = CreateObject("ADOX.Catalog")

    cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                               "Data Source=" & AddressTextBox.Text & "\" &    

         YearComboBox.Text & "\" & TextBox1.Text & ".mdb")

    '空明細テーブル作成
      Dim strTable As String
      Dim tbl As Object
      tbl = CreateObject("ADOX.TABLE")
      strTable = "meisai_master"
      tbl.Name = strTable
      cat.Tables.Append(tbl)
      With cat.Tables(strTable)
                            .Columns.Append("Code")
                            .Columns.Append("Himoku")
                            .Columns.Append("Kosyu")
                            .Columns.Append("Suppli")
                            .Columns.Append("Unit")
                            .Columns.Append("Num")
                            .Columns.Append("UnitPrice")
                            .Columns.Append("TotalPrice")
                            .Columns.Append("Used")
                            .Columns.Append("Remarks")
      End With

    Dim Cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AddressTextBox.Text & "\" & YearComboBox.Text & "\" & TextBox1.Text & ".mdb")
                        Dim SQLCm As OleDb.OleDbCommand = Cn.CreateCommand
                        SQLCm.CommandText = "SELECT Code as コード , Himoku as 費目 , Kosyu as 工種 , Suppli as 規格 , Unit as 単位 , Num as 数量 , UnitPrice as 単価 , TotalPrice as 合計 , Used as 適用 , Remarks as 備考 FROM meisai_master"
                        Dim Adapter As OleDb.OleDbDataAdapter
                        Adapter = New OleDb.OleDbDataAdapter(SQLCm)
                        Dim Builder As New OleDb.OleDbCommandBuilder(Adapter)
                        Dim Table As New DataTable
                        Adapter.Fill(Table)
                        Meisai_masterDataGridView.DataSource = Table

     

    このように、任意のディレクトリにMDBデータベースを作成することは出来るのですが、データの渡し先であるデータグリッドビューを編集した際の更新方法がよく分かりません。今まで、commandbuilderの自動コマンドにてupdateする経験しかない為、行き詰ってしまいました。

    出来れば、データセット及びテーブルアダプタ、バインディングソース等をしようした簡単な方法でご教授いただけないでしょうか?

    よろしくお願いします。それから、ちょっと分かりづらい内容になっってしまってすみません。

    2007年5月17日 12:58

回答

すべての返信

  • 主キーが無いようなのですが、CommandBuilderはどのようなUpdate文やInsert文を生成しているのでしょうか?これらがうまく生成されているようなら、AdapterのUpdateメソッドが使えるんですが・・・。とは言うものの、CommandBuilderは使わず、自分でUpdate文やInsert文を書いてしまった方が効率は良いです。冗長なSQL文が作成されることもないですし。

    文面から察するに、どうしてもデータセット、テーブルアダプタ、バインディングソースを使わなくてはならない場面ではないように思います。

    2007年5月17日 15:48
    モデレータ
  • ありがとうございました。

    やはりデータセット等を使用せずに更新したいと思います。

    2007年5月18日 3:58