[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 637
  • Last Modified:

Copy One Column From One DataTable To Another DataTable

I have an application that needs to take column out of a DataTable and insert it into another DataTable.

I have tried:

dtAllTheData.Columns.Add(dtFirst.Columns(3))

but I get an error saying that that column is already part of a dataset.

How do I do this?  I need to create a Single Table that has columns from a series of other tables.

0
lgropper
Asked:
lgropper
  • 2
  • 2
  • 2
  • +1
1 Solution
 
Kinger247Commented:
You could try cloning the column:

Dim DataColumn As DataColumn = dataset.Tables(0).Clone.Columns(0)
0
 
lgropperAuthor Commented:
That doesn't work, neither does


Dim MyCol as DataColumn = dataset.Tables(0).Copy.Columns(0)


gives the same Error saying that "" already belongs to dataset.Tables(0)


0
 
SanclerCommented:
You could overcome the "belongs to another table" problem on these lines

        Dim dc As DataColumn = dt1.Columns(0)
        dt1.Columns.Remove(dc)
        dt2.Columns.Add(dc)

but it won't produce what (I think) you want.  I imagine that what you actually want is not only the column, but also the data in it.  But the data belongs to a datatable's rows, not to its columns.  So all the above would do would be to put an empty column (with the same properties as the original one) in the second datatable - and, incidentally, get rid of the column and the data in each row for that column in the original datatable.

What you are going to have to do, I think, is create a new column in the second datatable and set its properties the same as those for the column you want to copy.  And then cycle through the rows in the original datatable, creating a new row for the second datatable, and setting the value for that as equal to the equivalent value from the original datatable.  On these lines

       Dim dt2 As New DataTable
       Dim dc As New DataColumn
       With dc
           .ColumnName = dt1.Columns(oldCol).ColumnName
           .DataType = dt1.Columns(oldCol).DataType
           'etcetera for each property you want transferred
       End With
       dt2.Columns.Add(dc)

       For Each dr As DataRow in dt1.Rows
           Dim ndr As DataRow = dt2.NewRow
           ndr(0) = dr(oldCol)
           dt2.Rows.Add(ndr)
       Next

Roger
0
[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

 
Bob LearnedCommented:
You could create a copy of the DataTable, using the Copy method, and then drop the columns that you don't need.

Bob
0
 
SanclerCommented:
Bob

Agreed - for one column only.  But the question ends "I need to create a Single Table that has columns from a series of other tables" and I don't think you could do that from more than one table.

Roger
0
 
Bob LearnedCommented:
Thanks, Roger, I missed that one.

Bob
0
 
lgropperAuthor Commented:
whoops, that should have been Excellent!  thanks a lot!
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now