Groups | Blog | Home
all groups > vb.net > september 2007 >

vb.net : How to create a new column in a datatable from two existing column


Peter
9/28/2007 5:34:00 PM
I want to create a new column in a datatable from two existing columns. I
have no problem to create the new column using the datatable.columns.add
method. The problem is the value of the new column may become system.dbnull
since one of the two existing columns may have system.dbnull. How can I fix
it so the new column will get the value of the other column even the other
column is system.dbnull?


Charlie
9/28/2007 10:45:00 PM
Assuming you are using a SELECT statement to get your data, you can combine
the fields in the statement, and SQL will treat any null cells from a string
type column as empty strings...

SELECT FirstName & " " & LastName AS CustomerName FROM Customers...

In this example, if a FirstName is null and there is only a last name for a
given record, the CustomerName would be shown as only the last name. You
would map your grid column to CustomerName. Also, this example assumes both
columns are strings. You can also combine numeric columns in SQL, but use +
rather than &.


[quoted text, click to view]
Peter
10/1/2007 11:07:01 AM
Hi Charlie,

The datatable is returned from a .NET method so I have no control on the
SELECT statement.

[quoted text, click to view]
Charlie
10/1/2007 11:29:01 AM
I don't know which .net method you are referring to, but you should still be
able to control the SELECT statement. The DataAdapter would be the most
common .net object to use to get data from an Access or SQL database. The
SELECT statement is a property of that object and can be passed as a
parameter, or set as a property.

In any case, as long as you are using a database that runs sql statements,
you should be able to re-code in a way that lets you use a SELECT statement.

[quoted text, click to view]
Peter
10/1/2007 12:57:00 PM
Hi Charlie,

The datatable is the one returned from this method:
http://msdn2.microsoft.com/en-us/library/system.data.common.dbdatasourceenumerator.getdatasources.aspx


[quoted text, click to view]
Charlie
10/1/2007 3:29:02 PM
You could write a function that takes a single parameter--Datatable (the one
returned by GetDataSources). In the function, create a new datatable (that
will be the return value) and populate it in nested loops using the values
from the GetDataSources datatable. In the second loop you would combine the
columns you want to combine into a single column. That's where you could
test for isdbnull.

[quoted text, click to view]
Peter
10/1/2007 3:34:00 PM
Hi Armin,

I add the new column based on existing columns. If one of the based columns
contains null (dbnull), the new column will contain null regardless the value
in other based columns.

[quoted text, click to view]
Peter
10/1/2007 6:58:03 PM
Hi Armin,

What I mean is the value of the new column will have the combined value of
existing columns I specified using datatable.columns.add().

[quoted text, click to view]
Peter
10/1/2007 7:22:01 PM
The value of the new column will simply be the value of columnX + the value
of columnY. This is simply done by issuing datatable.columns.add().
However, the value of the new column will be null if either one of the
columns is null.

[quoted text, click to view]
Armin Zingler
10/1/2007 11:34:04 PM
"Peter" <Peter@discussions.microsoft.com> schrieb
[quoted text, click to view]


I do not completely understand the problem. I see, you are getting this
datatable returned. Now, you want to add another column. You say, the
problem is that there might be NULL values. Why is this a problem? What does
the value of the new column have to be?

Armin
Armin Zingler
10/2/2007 12:00:00 AM
"Peter" <Peter@discussions.microsoft.com> schrieb
[quoted text, click to view]

Ok, but how do you calculate the values in the column? The sum must be put
into the rows at any time.

[quoted text, click to view]
Cor Ligthert[MVP]
10/2/2007 12:00:00 AM
Peter,

What Armin probably asks is. Show that piece of code that you are using. It
seems that people is afraid to show that here, why we don't understand,
because really you are not showing secrets or your own inventions with that.

We are not forever asking direct questions here in this newsgroup, however I
know that Armin often asks, "Show us a piece of your code".

:-)

Cor
Armin Zingler
10/2/2007 1:04:15 AM
"Peter" <Peter@discussions.microsoft.com> schrieb
[quoted text, click to view]

What is a "column based on existing columns"?


Armin Zingler
10/2/2007 4:10:51 AM
"Peter" <Peter@discussions.microsoft.com> schrieb
[quoted text, click to view]

What's a "combined value"? Sorry for asking if that's too obvious.


[quoted text, click to view]
AddThis Social Bookmark Button