Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsVB SyntaxEnterprise DevelopmentDatabase AccessControlsCOMWin APICrystal ReportDeploymentGeneralGeneral 2
Related Topics
VB.NET / ASP.NETMS SQL ServerMS AccessOther Database ProductsMore Topics ...

VB Forum / Database Access / September 2005



Tip: Looking for answers? Try searching our database.

Inserts to DataSet aren't added to db - updates work fine

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
timbobd - 27 Sep 2005 02:56 GMT
Here is another newbie question, but this one is driving me crazy.

I am inserting and updating records in a DataSet, which show up in a bound
DataGrid just fine. I am also issuing a DataAdapter.Update command, and the
updates are saved to the database but the inserts are not. As far as I can
tell, I am following the two examples that I have to the tee, but it just
doesn't work. I'm sure that I'm overlooking some simple detail. FYI I am
using an OleDBCommandBuilder to build the insert and update commands.

I moved all of the relevant code into a single form to create a simplified
example, and it follows. Thanks in advance!!!!

----------------------------------------------------------
' this project has a single window with a bound DataGrid that
'displays a single user's "contact information", which is one row
'
'clicking on btnUpdate updates that one record
'clicking on btnInsert inserts a new row
'both updates and inserts are immediately visible in the DataGrid
'but only the updates are saved in the database

Public Class Form1
   Inherits System.Windows.Forms.Form

   Private oleConnection As OleDbConnection
   Private Shared connString As String
   Private sql As String
   Private daCustContact As New OleDbDataAdapter
   Private dsCust As DataSet
   Private cmdCustBuilder As OleDbCommandBuilder
   Private cmdCustContact As New OleDbCommand
   Private cmdCustContactBuilder As OleDbCommandBuilder

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

       connString = " .. my conncetion string .."

       oleConnection = New OleDbConnection(connString)
       oleConnection.Open()
       dsCust = New DataSet("CustomerContact")

       cmdCustContact.Connection = oleConnection
       cmdCustContact.CommandText = "SELECT CustomerNumber, ContactAddress,
MethodType, SequenceNumber, InactiveDate " _
   & "FROM CustomerContact " _
   & " WHERE CustomerNumber = 526"
       daCustContact.SelectCommand = cmdCustContact
       daCustContact.TableMappings.Add("Table", "CustomerContact")

       cmdCustContactBuilder = New OleDbCommandBuilder(daCustContact)
       cmdCustContactBuilder.QuotePrefix = "["
       cmdCustContactBuilder.QuoteSuffix = "]"
       daCustContact.UpdateCommand = cmdCustContactBuilder.GetUpdateCommand
       daCustContact.InsertCommand = cmdCustContactBuilder.GetInsertCommand
       daCustContact.DeleteCommand = cmdCustContactBuilder.GetDeleteCommand
       daCustContact.Fill(dsCust, "CustomerContact")

       DataGrid1.SetDataBinding(dsCust, "CustomerContact")

   End Sub

   Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnUpdate.Click
       With dsCust.Tables("CustomerContact").Rows(0)
           .Item("MethodType") = "Fax"
           .Item("SequenceNumber") = Convert.ToByte(10)
           .Item("ContactAddress") = .Item("ContactAddress") & "xxx"
       End With
       UpdateCustomerContact()
   End Sub

   Public Sub UpdateCustomerContact()
       BindingContext(dsCust.Tables("CustomerContact")).EndCurrentEdit()

       daCustContact.Update(dsCust, "CustomerContact")  
   End Sub

   Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnInsert.Click
       Dim dtCc As DataTable = dsCust.Tables("CustomerContact")
       Dim dr As DataRow = dtCc.NewRow()

       dr("CustomerNumber") = 526
       dr("MethodType") = "Email"
       dr("SequenceNumber") = 2
       dr("ContactAddress") = "hacking code"
       dr("InactiveDate") = System.DBNull.Value

       Try
           dsCust.Tables("CustomerContact").Rows.Add(dr)
           dr.AcceptChanges()
           dsCust.AcceptChanges()

           UpdateCustomerContact()
       Catch ex As Exception
           MessageBox.Show("Exception occurred: " & ex.Message,
MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try

   End Sub

 Public Sub UpdateCustomerContact()
     BindingContext(dsCust.Tables("CustomerContact")).EndCurrentEdit()
     daCustContact.Update(dsCust, "CustomerContact")  
 End Sub

End Class
Earl - 29 Sep 2005 01:41 GMT
You are in the wrong newsgroup. This is for ADO "classic". You need to be in
microsoft.public.dotnet.framework.adonet. They will advise you there not to
use the CommandBuilder.

> Here is another newbie question, but this one is driving me crazy.
>
[quoted text clipped - 109 lines]
>
> End Class
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.