473,324 Members | 2,511 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,324 software developers and data experts.

Object reference not set to an instance of an object?

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
10 3815
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
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
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
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
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
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
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
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
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
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 thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

28
by: Daniel | last post by:
Hello =) I have an object which contains a method that should execute every x ms. I can use setInterval inside the object construct like this - self.setInterval('ObjectName.methodName()',...
6
by: Martin | last post by:
I'd like to be able to get the name of an object instance from within a call to a method of that same object. Is this at all possible? The example below works by passing in the name of the object...
15
by: Carlos Lozano | last post by:
Hi, What is the right way to create an OCX COM component. The component is already registerred, but can't create an instance. I am using the reference to the interop module created. If I use...
3
by: Adam | last post by:
We have a web site that uses .vb for the web pages and .cs for a class module. We are getting the error in .NET 2.0 and VS 2005 beta 2. It does work with .NET 1.1. When trying to access a page...
4
by: Luke Matuszewski | last post by:
Here are some questions that i am interested about and wanted to here an explanation/discussion: 1. (general) Is the objectness in JavaScript was supported from the very first version of it (in...
12
by: Andrew Poulos | last post by:
With the following code I can't understand why this.num keeps incrementing each time I create a new instance of Foo. For each instance I'm expecting this.num to alert as 1 but keeps incrementing. ...
6
by: Shailen Sukul | last post by:
Observed a weird behaviour with object references. See code listing below: using System; using System.Collections.Generic; using System.Text; namespace PointerExceptionTest { /*
14
by: Philipp Reif | last post by:
Hi all, I've got a little hole in my head concerning references. Here's what I'm trying to do: I'm calling a function, passing the reference of a business object for editing. The function clones...
3
by: User1014 | last post by:
A global variable is really just a property of the "Global Object", so what does that make a function defined in the global context? A method of the Global Object? ...
2
by: Ralph | last post by:
Hi I don't understand why it's not working: function schedule(imTop){ this.tdImagesTop = imTop; } schedule.prototype.selectEl = function() { alert(this.tdImagesTop);
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.