Comparing Two DataSets

Discussion in 'ASP .Net' started by Will Lastname, Sep 14, 2005.

  1. In one of the applications that I'm working on I have 2 sets of
    functions that build different datasets.

    Imagine 4 columns in a datagrid. Inside those 4 columns I have nested
    datalists. Two of the datalists' datasources point to database A and
    the other two point to database B. This effect allows the client to
    perform a side-by-side comparison of the same product so that records
    can be updated accordingly. It's easy enough to scroll down and look
    for differences but I was asked to make it even easier for the client.
    The ultimate goal is to have any changes displayed in red or bold type
    so that differences can be spotted at first glance. An example would be
    that if Database A has product XYZ's latest version at 3 and Database B
    has product XYZ's latest version at 4, then the 4 would be displayed in
    red or bold type.

    I'm thinking that a cookie might be the way to go but I could be wrong.
    Does anyone have any suggestions or references that I can check out to
    compare datasets row-by-row? Is there an easier way to go about doing
    this?
    Will Lastname, Sep 14, 2005
    #1
    1. Advertising

  2. Can you join the relevant tables in SQL? Cross database joins are quite
    straight forward if you have the necessary permissions. That way you could
    flag your interest using computed columns. Probably more efficient than
    regular coding.

    "Will Lastname" wrote:

    > In one of the applications that I'm working on I have 2 sets of
    > functions that build different datasets.
    >
    > Imagine 4 columns in a datagrid. Inside those 4 columns I have nested
    > datalists. Two of the datalists' datasources point to database A and
    > the other two point to database B. This effect allows the client to
    > perform a side-by-side comparison of the same product so that records
    > can be updated accordingly. It's easy enough to scroll down and look
    > for differences but I was asked to make it even easier for the client.
    > The ultimate goal is to have any changes displayed in red or bold type
    > so that differences can be spotted at first glance. An example would be
    > that if Database A has product XYZ's latest version at 3 and Database B
    > has product XYZ's latest version at 4, then the 4 would be displayed in
    > red or bold type.
    >
    > I'm thinking that a cookie might be the way to go but I could be wrong.
    > Does anyone have any suggestions or references that I can check out to
    > compare datasets row-by-row? Is there an easier way to go about doing
    > this?
    >
    >
    =?Utf-8?B?SmViQnVzaGVsbA==?=, Sep 14, 2005
    #2
    1. Advertising

  3. Jeb: I wish I could as this would make the most sense. The only problem
    is that one database is MS Access and one is SQL.
    Will Lastname, Sep 14, 2005
    #3
  4. Will,

    What about putting both tables into the same dataset and creating a
    relationship?

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > In one of the applications that I'm working on I have 2 sets of
    > functions that build different datasets.
    >
    > Imagine 4 columns in a datagrid. Inside those 4 columns I have nested
    > datalists. Two of the datalists' datasources point to database A and
    > the other two point to database B. This effect allows the client to
    > perform a side-by-side comparison of the same product so that records
    > can be updated accordingly. It's easy enough to scroll down and look
    > for differences but I was asked to make it even easier for the client.
    > The ultimate goal is to have any changes displayed in red or bold type
    > so that differences can be spotted at first glance. An example would be
    > that if Database A has product XYZ's latest version at 3 and Database B
    > has product XYZ's latest version at 4, then the 4 would be displayed in
    > red or bold type.
    >
    > I'm thinking that a cookie might be the way to go but I could be wrong.
    > Does anyone have any suggestions or references that I can check out to
    > compare datasets row-by-row? Is there an easier way to go about doing
    > this?
    >
    S. Justin Gengo, Sep 14, 2005
    #4
  5. That sounds like it would be the best bet but I'm wondering how much
    work would go into implementing it.

    I have 4 functions that I call for the Access database and the same 4
    functions for the SQL database. The only difference being minor SQL
    syntax differences.

    Are there any sites or references that you could suggest?
    Will Lastname, Sep 14, 2005
    #5
  6. Will,

    You'll have to run all your SQL statements either way, but then once you
    have all the tables in a dataset you can create the relationship(s). Here's
    a snippet of code that shows how to create a relationship.

    ' Create and fill the DataSet.
    m_DataSet = New DataSet
    m_da_Addresses.Fill(m_DataSet, "Addresses")
    m_da_TestScores.Fill(m_DataSet, "TestScores")

    ' Define the relationship between the tables.
    Dim data_relation As New _
    DataRelation("Addresses_TestScores", _
    m_DataSet.Tables("Addresses").Columns("ContactID"), _
    _
    m_DataSet.Tables("TestScores").Columns("ContactID"))
    m_DataSet.Relations.Add(data_relation)

    Once your relationships are created you can do some pretty neat things with
    DataViews I think you should be able to query your tables and look for like
    names but with different numbers. It will take some experimentation. I would
    google for info on creating relationship

    Take a look at the code at the bottom of this page:

    http://www32.brinkster.com/srisamp/netArticles/article_15.htm

    It's very similar to what you might do.

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > That sounds like it would be the best bet but I'm wondering how much
    > work would go into implementing it.
    >
    > I have 4 functions that I call for the Access database and the same 4
    > functions for the SQL database. The only difference being minor SQL
    > syntax differences.
    >
    > Are there any sites or references that you could suggest?
    >
    S. Justin Gengo, Sep 14, 2005
    #6
  7. Again Justin, always coming through in the clutch!

    Thanks a million!
    Will Lastname, Sep 14, 2005
    #7
  8. I also read another article about storing multiple database tables in
    the dataset. Will I run into problems with the fact that both databases
    have the exact same field names?
    Will Lastname, Sep 14, 2005
    #8
  9. For instance, if I have the datalist's datasource set to
    'FunctionGetItemVersionByProductID(ProductID) and I have in my
    itemtemplate: <%# DataBinder.Eval(Container.DataItem, "ProductName")
    %>, won't there by 2 instances of Product name and in turn throw an
    error?
    Will Lastname, Sep 14, 2005
    #9
  10. Will,

    Bind the datatable and not the entire dataset. Then it won't matter.

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > For instance, if I have the datalist's datasource set to
    > 'FunctionGetItemVersionByProductID(ProductID) and I have in my
    > itemtemplate: <%# DataBinder.Eval(Container.DataItem, "ProductName")
    > %>, won't there by 2 instances of Product name and in turn throw an
    > error?
    >
    S. Justin Gengo, Sep 14, 2005
    #10
  11. I read some related articles very thoroughly and have at least a
    general understanding of how to create the datatable. I have about 8
    functions that are tied to my datalists that retrieve data. Each
    function has different SQL statements that retrieve specific pieces of
    data. What would be the best way of "concatenating" onto my current
    datatable? If I dim a new datatable in each function won't the
    information keep getting rewritten? I haven't found any literature
    online in regards to this matter. Everything I've come across
    presupposes that there is one subroutine with 2 or more datasets.
    Will Lastname, Sep 15, 2005
    #11
  12. You can add as many datatables to a dataset as you'd like to. You just have
    to make certain that each datatable has a different name.



    For example (Assuming you already have a dataset that contains one or more
    datatables) you may add another like so:



    Public Function AddTableToDataSet(ByVal dataSetToAddTo As DataSet, ByVal
    sqlCommand As SqlCommand, ByVal dataSetTableName As String) As DataSet

    Try

    Dim FortunateDataAdapter As SqlDataAdapter =
    GetDataAdapter(sqlCommand)

    FortunateDataAdapter.Fill(dataSetToAddTo, dataSetTableName)



    Return dataSetToAddTo

    Catch e As Exception

    Throw e

    End Try

    End Function



    Sincerely,

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    >I read some related articles very thoroughly and have at least a
    > general understanding of how to create the datatable. I have about 8
    > functions that are tied to my datalists that retrieve data. Each
    > function has different SQL statements that retrieve specific pieces of
    > data. What would be the best way of "concatenating" onto my current
    > datatable? If I dim a new datatable in each function won't the
    > information keep getting rewritten? I haven't found any literature
    > online in regards to this matter. Everything I've come across
    > presupposes that there is one subroutine with 2 or more datasets.
    >
    S. Justin Gengo, Sep 15, 2005
    #12
  13. So to test this I created a dataset with 2 tables. Let's just say
    Table1 and Table2. In going through my FOR Next Loop I tried the
    following:

    For i = 0 To dsRowCount - 1
    If ds.Tables("Table1").Rows(i)("ColumnName") <>
    ds.Tables("Table2").Rows(i)("ColumnName") Then
    response.write("not the same")
    Else
    resposne.write("ok")
    End If
    Next i

    I am getting an "Object reference not set to an instance of an object."
    error when I attempt this. Any suggestions or pointers?
    Will Lastname, Sep 15, 2005
    #13
  14. I filled one of the datasets in Function A and the other in Function B
    and returned them. Am I not able to access them this way?
    Will Lastname, Sep 15, 2005
    #14
  15. Will,

    Running in debug mode, does your for next loop error out right away, or make
    it through at least one iteration first?

    I'm wondering if your tables have the same number of columns in them. If
    they don't...

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > So to test this I created a dataset with 2 tables. Let's just say
    > Table1 and Table2. In going through my FOR Next Loop I tried the
    > following:
    >
    > For i = 0 To dsRowCount - 1
    > If ds.Tables("Table1").Rows(i)("ColumnName") <>
    > ds.Tables("Table2").Rows(i)("ColumnName") Then
    > response.write("not the same")
    > Else
    > resposne.write("ok")
    > End If
    > Next i
    >
    > I am getting an "Object reference not set to an instance of an object."
    > error when I attempt this. Any suggestions or pointers?
    >
    S. Justin Gengo, Sep 15, 2005
    #15
  16. It errors even if I try:

    response.write(ds.Tables("Table").Rows(0)("ColumnName"))

    I'm getting so frustrated with this.

    Thanks for helping out!
    Will Lastname, Sep 15, 2005
    #16
  17. Well, then it's not finding any columns at all for that table.

    Try this code (it uses index numbers for the table, rows, columns so that if
    the problem is the wrong table name you'll know):

    '---Start by making certain that the dataset actually contains at least the
    one table.
    If ds.Tables(0) Is Nothing Then
    Response.Write("Table Not Found!" & "<br>")
    Else
    '---Check if any rows exist
    If ds.Tables(0).Rows.Count > 0 Then
    Response.Write(ds.Tables(0).Rows.Count.ToString & "<br>")
    Response.Write(ds.Tables(0).Rows(0).Columns(0).ColumnName)
    Else
    Response.Write("No Rows Found!")
    End If
    End If

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > It errors even if I try:
    >
    > response.write(ds.Tables("Table").Rows(0)("ColumnName"))
    >
    > I'm getting so frustrated with this.
    >
    > Thanks for helping out!
    >
    S. Justin Gengo, Sep 15, 2005
    #17
  18. This writes the name of the column name in the function where I fill
    the dataset. If I try to compare a dataset in another function to this
    dataset then I get an error.
    Will Lastname, Sep 15, 2005
    #18
  19. Will,

    I didn't realize you were declaring the dataset object inside of one
    function and then using it again in another...

    Objects declared within a function are only available within that function.

    Instead declare your dataset object as a dataset outside of the first
    function near the top of the page but inside of the class.

    Private ds As DataSet

    Then fill the dataset inside of your first function.

    Private Function Number1()
    '---Fill ds here
    End Function

    You won't have to declare ds inside of the function it's available
    throughout the whole class.

    Now it won't be nothing in the second function.


    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer

    www.aboutfortunate.com

    "Out of chaos comes order."
    Nietzsche
    "Will Lastname" <> wrote in message
    news:...
    > This writes the name of the column name in the function where I fill
    > the dataset. If I try to compare a dataset in another function to this
    > dataset then I get an error.
    >
    S. Justin Gengo, Sep 16, 2005
    #19
  20. Object reference not set to an instance of an object

    Still getting this. I'm going to have to bag this idea for now.
    Will Lastname, Sep 19, 2005
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Elliot M. Rodriguez
    Replies:
    0
    Views:
    349
    Elliot M. Rodriguez
    Jul 6, 2004
  2. news.microsoft.com
    Replies:
    0
    Views:
    422
    news.microsoft.com
    Apr 12, 2006
  3. Francisco Garcia
    Replies:
    2
    Views:
    458
    Fran Garcia
    Apr 13, 2006
  4. news.microsoft.com
    Replies:
    0
    Views:
    180
    news.microsoft.com
    Apr 12, 2006
  5. Francisco Garcia
    Replies:
    3
    Views:
    240
    vincent
    Apr 13, 2006
Loading...

Share This Page