By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,107 Members | 1,253 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,107 IT Pros & Developers. It's quick & easy.

Object reference not set to an instance of an object?

P: n/a
Consider the following code that adds a table to a DataSet dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready after
which only I am defining the Primary Key, isn't it? So why the error?

Thanks,

Arpan

Jul 31 '06 #1
Share this Question
Share on Google+
10 Replies


P: n/a
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Consider the following code that adds a table to a DataSet dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready after
which only I am defining the Primary Key, isn't it? So why the error?

Thanks,

Arpan

Jul 31 '06 #2

P: n/a
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last Name"
in the DataTable in the first place? But if that's the case, I haven't
used "New DataColumn" anywhere in the code I have cited in post #1 but
the DataGrid does display all the columns & the rows correctly when the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do they
get created in the code shown in post #1? In other words, which line in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Consider the following code that adds a table to a DataSet dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready after
which only I am defining the Primary Key, isn't it? So why the error?

Thanks,

Arpan
Jul 31 '06 #3

P: n/a
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the dataset
and looking for table "Users" before you've added it to the dataset in the
first place.

As for the creation of the columns without instantiating them (as I showed
in my last post), I can't explain why it works for you. The columns must be
getting created by implicit means. Nonetheless, it is better practice to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name", Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name", Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegro ups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last Name"
in the DataTable in the first place? But if that's the case, I haven't
used "New DataColumn" anywhere in the code I have cited in post #1 but
the DataGrid does display all the columns & the rows correctly when the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do they
get created in the code shown in post #1? In other words, which line in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
>These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googleg roups.com...
Consider the following code that adds a table to a DataSet dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready after
which only I am defining the Primary Key, isn't it? So why the error?

Thanks,

Arpan

Aug 1 '06 #4

P: n/a
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.
>The columns must be getting created by implicit means
That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the dataset
and looking for table "Users" before you've added it to the dataset in the
first place.

As for the creation of the columns without instantiating them (as I showed
in my last post), I can't explain why it works for you. The columns must be
getting created by implicit means. Nonetheless, it is better practice to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name", Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name", Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegro ups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last Name"
in the DataTable in the first place? But if that's the case, I haven't
used "New DataColumn" anywhere in the code I have cited in post #1 but
the DataGrid does display all the columns & the rows correctly when the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do they
get created in the code shown in post #1? In other words, which line in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Consider the following code that adds a table to a DataSet dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready after
which only I am defining the Primary Key, isn't it? So why the error?

Thanks,

Arpan
Aug 1 '06 #5

P: n/a
Yes, the primary key can be set before the table is added to the dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.
>>The columns must be getting created by implicit means

That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
>Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the
dataset
and looking for table "Users" before you've added it to the dataset in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The columns must
be
getting created by implicit means. Nonetheless, it is better practice to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegr oups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last Name"
in the DataTable in the first place? But if that's the case, I haven't
used "New DataColumn" anywhere in the code I have cited in post #1 but
the DataGrid does display all the columns & the rows correctly when the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do they
get created in the code shown in post #1? In other words, which line in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googleg roups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the
line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan


Aug 1 '06 #6

P: n/a
Yes, the primary key can be set before the table is added to the dataset

How?

Arpan

Scott M. wrote:
Yes, the primary key can be set before the table is added to the dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.
>The columns must be getting created by implicit means
That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the
dataset
and looking for table "Users" before you've added it to the dataset in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The columns must
be
getting created by implicit means. Nonetheless, it is better practice to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegro ups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last Name"
in the DataTable in the first place? But if that's the case, I haven't
used "New DataColumn" anywhere in the code I have cited in post #1 but
the DataGrid does display all the columns & the rows correctly when the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do they
get created in the code shown in post #1? In other words, which line in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as the
Primary Key before adding the DataTable to the DataSet i.e. if the 2
lines preceding the "End Sub" line are cut & pasted just above the
line
"dSet.Tables.Add(dTable)", then the following error gets generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn = {dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary Key
before adding the DataTable to the DataSet? If yes, then why should
this cause the error? After all, I am defining the Primary Key after
creating the DataTable i.e. the schema of the DataTable is ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan
Aug 2 '06 #7

P: n/a
Just think about the objects involved here...The PrimaryKey property is a
property of a DataTable. So, when you want to set that property, you need
to have a DataTable. Now, do you have a DataTable before your DataSet is
all set up, yes, you have dTable. So:

Dim dColumn As DataColumn() = {dTable.Columns("ID")}

dTable.PrimaryKey = dColumn

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@b28g2000cwb.googlegr oups.com...
>Yes, the primary key can be set before the table is added to the dataset

How?

Arpan

Scott M. wrote:
>Yes, the primary key can be set before the table is added to the dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googleg roups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.

The columns must be getting created by implicit means

That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the
dataset
and looking for table "Users" before you've added it to the dataset in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The columns
must
be
getting created by implicit means. Nonetheless, it is better practice
to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegr oups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last
Name"
in the DataTable in the first place? But if that's the case, I
haven't
used "New DataColumn" anywhere in the code I have cited in post #1
but
the DataGrid does display all the columns & the rows correctly when
the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do
they
get created in the code shown in post #1? In other words, which line
in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you
have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set
to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can
you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googleg roups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as
the
Primary Key before adding the DataTable to the DataSet i.e. if
the 2
lines preceding the "End Sub" line are cut & pasted just above
the
line
"dSet.Tables.Add(dTable)", then the following error gets
generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary
Key
before adding the DataTable to the DataSet? If yes, then why
should
this cause the error? After all, I am defining the Primary Key
after
creating the DataTable i.e. the schema of the DataTable is ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan

Aug 2 '06 #8

P: n/a
Also, there is no rule that says that a DataTable *must* be added to a
DataSet at all, so setting the primary key must be possible before adding
the table to the DataSet, since you may not even want to use a dataset
anyway.
"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@b28g2000cwb.googlegr oups.com...
>Yes, the primary key can be set before the table is added to the dataset

How?

Arpan

Scott M. wrote:
>Yes, the primary key can be set before the table is added to the dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googleg roups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.

The columns must be getting created by implicit means

That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the
dataset
and looking for table "Users" before you've added it to the dataset in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The columns
must
be
getting created by implicit means. Nonetheless, it is better practice
to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegr oups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last
Name"
in the DataTable in the first place? But if that's the case, I
haven't
used "New DataColumn" anywhere in the code I have cited in post #1
but
the DataGrid does display all the columns & the rows correctly when
the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do
they
get created in the code shown in post #1? In other words, which line
in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you
have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set
to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can
you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googleg roups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as
the
Primary Key before adding the DataTable to the DataSet i.e. if
the 2
lines preceding the "End Sub" line are cut & pasted just above
the
line
"dSet.Tables.Add(dTable)", then the following error gets
generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary
Key
before adding the DataTable to the DataSet? If yes, then why
should
this cause the error? After all, I am defining the Primary Key
after
creating the DataTable i.e. the schema of the DataTable is ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan

Aug 2 '06 #9

P: n/a
Thank you very very very much, Scott, for all the guidance you have
bestowed on me.

Regards,

Arpan
Scott M. wrote:
Also, there is no rule that says that a DataTable *must* be added to a
DataSet at all, so setting the primary key must be possible before adding
the table to the DataSet, since you may not even want to use a dataset
anyway.
"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@b28g2000cwb.googlegr oups.com...
Yes, the primary key can be set before the table is added to the dataset
How?

Arpan

Scott M. wrote:
Yes, the primary key can be set before the table is added to the dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier for
me to grasp this topic & the reason behind the error message. Moreover,
I have always preferred coding in the manner you have shown & not club
2 lines into one which can be very well done in ASP.NET. I believe it
makes things easier to understand especially for newbies like me.

The columns must be getting created by implicit means

That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into the
dataset
and looking for table "Users" before you've added it to the dataset in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The columns
must
be
getting created by implicit means. Nonetheless, it is better practice
to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegro ups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last
Name"
in the DataTable in the first place? But if that's the case, I
haven't
used "New DataColumn" anywhere in the code I have cited in post #1
but
the DataGrid does display all the columns & the rows correctly when
the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do
they
get created in the code shown in post #1? In other words, which line
in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you
have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not set
to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how can
you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set as
the
Primary Key before adding the DataTable to the DataSet i.e. if
the 2
lines preceding the "End Sub" line are cut & pasted just above
the
line
"dSet.Tables.Add(dTable)", then the following error gets
generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it the
DataSet or the DataTable or some other object? Also is the error
generating because I am defining the column "ID" as the Primary
Key
before adding the DataTable to the DataSet? If yes, then why
should
this cause the error? After all, I am defining the Primary Key
after
creating the DataTable i.e. the schema of the DataTable is ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan

Aug 3 '06 #10

P: n/a
No problem. Good luck!
"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
Thank you very very very much, Scott, for all the guidance you have
bestowed on me.

Regards,

Arpan
Scott M. wrote:
>Also, there is no rule that says that a DataTable *must* be added to a
DataSet at all, so setting the primary key must be possible before adding
the table to the DataSet, since you may not even want to use a dataset
anyway.
"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@b28g2000cwb.googleg roups.com...
>Yes, the primary key can be set before the table is added to the
dataset

How?

Arpan

Scott M. wrote:
Yes, the primary key can be set before the table is added to the
dataset.

"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@m73g2000cwd.googleg roups.com...
Thanks, Scott, for the suggestions. You have indeed made it easier
for
me to grasp this topic & the reason behind the error message.
Moreover,
I have always preferred coding in the manner you have shown & not
club
2 lines into one which can be very well done in ASP.NET. I believe
it
makes things easier to understand especially for newbies like me.

The columns must be getting created by implicit means

That was my first impression.

One last question (probably!) on this topic - can the Primary Key be
defined on the "ID" column before adding the DataTable to the
DataSet?
If yes, then how?

Thanks once again for your helpful advices.

Regards,

Arpan

Scott M. wrote:
Ok, first of all if you attempt to set your primary key like this:

'Define the Primary Key
Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn

dSet.Tables.Add(dTable)

You'll get the object reference error because you are going into
the
dataset
and looking for table "Users" before you've added it to the dataset
in
the
first place.

As for the creation of the columns without instantiating them (as I
showed
in my last post), I can't explain why it works for you. The
columns
must
be
getting created by implicit means. Nonetheless, it is better
practice
to
explicitly create the columns ahead of time :

'Create an empty DataSet

Dim dSet As New DataSet

'Create a new table & add columns

Dim dTable As New DataTable("Users")

Dim idCol As New DataColumn("ID", Type.GetType("System.Int32"))

Dim fNameCol As New DataColumn("First Name",
Type.GetType("System.String"))

Dim lNameCol As New DataColumn("Last Name",
Type.GetType("System.String"))

dTable.Columns.Add(idCol)

dTable.Columns.Add(fNameCol)

dTable.Columns.Add(lNameCol)

dSet.Tables.Add(dTable)

'Define the Primary Key

Dim dColumn As DataColumn() = {dSet.Tables("Users").Columns("ID")}

dSet.Tables("Users").PrimaryKey = dColumn


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@75g2000cwc.googlegr oups.com...
Scott, you mean to say that the following lines

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name", Type.GetType("System.String"))
dTable.Columns.Add("Last Name", Type.GetType("System.String"))

in reality, DO NOT create the columns "ID, "First Name" & "Last
Name"
in the DataTable in the first place? But if that's the case, I
haven't
used "New DataColumn" anywhere in the code I have cited in post
#1
but
the DataGrid does display all the columns & the rows correctly
when
the
code is executed. How come?

Moreover, if the above 3 lines do not create any columns, when do
they
get created in the code shown in post #1? In other words, which
line
in
the code in post #1 actually creates the 3 columns?

Finally, even if I replace the above 3 lines with the 3 lines you
have
shown & set the Primary Key on the column "ID" before adding the
DataTable to the DataSet, then still the "Object reference not
set
to
an instance of an object" gets thrown. Why?

Thanks,

Regards,

Arpan

Scott M. wrote:
These are the culprits:

dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

You don't have any actual DataColumns in existence yet, so how
can
you
add
what you don't have to the Columns collection of dTable?

Should be:

dTable.Columns.Add(New DataColumn("ID",
Type.GetType("System.Int32")))
dTable.Columns.Add(New DataColumn("First Name",
Type.GetType("System.String")))
dTable.Columns.Add(New DataColumn("Last Name",
Type.GetType("System.String")))


"Arpan" <ar******@hotmail.comwrote in message
news:11**********************@p79g2000cwp.googleg roups.com...
Consider the following code that adds a table to a DataSet
dynamically:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
'Create an empty DataSet
Dim dSet As New DataSet

'Create a new table & add columns
Dim dTable As New DataTable("Users")
dTable.Columns.Add("ID", Type.GetType("System.Int32"))
dTable.Columns.Add("First Name",
Type.GetType("System.String"))
dTable.Columns.Add("Last Name",
Type.GetType("System.String"))

dSet.Tables.Add(dTable)

'Define the Primary Key
Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}
dSet.Tables("Users").PrimaryKey = dColumn
End Sub
</script>

The above code works fine but if the column named "ID" is set
as
the
Primary Key before adding the DataTable to the DataSet i.e. if
the 2
lines preceding the "End Sub" line are cut & pasted just above
the
line
"dSet.Tables.Add(dTable)", then the following error gets
generated:

Object reference not set to an instance of an object.

pointing to the line

Dim dColumn() As DataColumn =
{dSet.Tables("Users").Columns("ID")}

Which "object" is the above error message referring to? Is it
the
DataSet or the DataTable or some other object? Also is the
error
generating because I am defining the column "ID" as the
Primary
Key
before adding the DataTable to the DataSet? If yes, then why
should
this cause the error? After all, I am defining the Primary Key
after
creating the DataTable i.e. the schema of the DataTable is
ready
after
which only I am defining the Primary Key, isn't it? So why the
error?

Thanks,

Arpan


Aug 3 '06 #11

This discussion thread is closed

Replies have been disabled for this discussion.