Solved

DataSet GetChanges - Modified VALUES only

Posted on 2009-04-06
3
362 Views
Last Modified: 2013-11-26
Is there a way to only get the actual values that were modified in a dataset.  My below code works, but produces the whole row, not just the changes data.

I want to display to the user any values that have changed after a "sync" with an outside DB.

Also, the Main Dataset (DRIPeachDataSet) as columns in the table that is syncing that the other dataset (DIMMSDataSet) does not have.  I would like to only compare the field values where the column names match.

I may just have to hard code it...

Thanks.
Private Sub SyncTicket()
   If DIMMSDataSet.HasChanges() Then
            ' Use GetChanges to extract subset.
            PrintValues(DIMMSDataSet.GetChanges(DataRowState.Modified),"Subset values")
   End If
End Sub
 
 Private Sub PrintValues(ByVal dataSet As DataSet, ByVal PeachDataSet As DataSet, ByVal label As String)
        Console.WriteLine(Label + ControlChars.Cr)
        Dim table As DataTable
   
        For Each table In dataSet.Tables
            If table.TableName.ToString = "TRX_HDR_DRI" Then
                'Console.WriteLine("TableName: " + table.TableName)
                Dim row As DataRow
                For Each row In table.Rows
                    Dim column As DataColumn
                    For Each column In table.Columns
                        Console.Write(ControlChars.CrLf & column.ColumnName.ToString & ": " & row(column).ToString())
                    Next column
                Next row
            End If
        Next table
    End Sub

Open in new window

0
Comment
Question by:vwalla
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 53

Expert Comment

by:Dhaest
ID: 24084396
Throught the getChanges, you'll only get the rows back where some column values have been changed
I don't think that these rows hold the old value and the new values.

Implement your own logic: DataTable Transaction Logger
http://www.codeproject.com/KB/database/dttl.aspx?display=PrintAll&fid=274009&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=1870081
0
 
LVL 15

Accepted Solution

by:
oobayly earned 500 total points
ID: 24085291
You could use the property that requests the DataRowVersion:
For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
        If row.HasVersion(DataRowVersion.Original) Then
            Console.WriteLine("{0}: '{1}' -> '{2}'", column.ColumnName, row(column, DataRowVersion.Original), row(column))
        Else
            Console.WriteLine("{0}: '{1}' has not changed", column.ColumnName, row(column))
        End If
    Next
Next

Open in new window

0
 
LVL 1

Author Closing Comment

by:vwalla
ID: 31567324
This works perfectly!  Thanks!
0

Featured Post

SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

696 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question