Cannot access Columns and Rows of some Strong-Typed Dataset's DataTables

K

Kyle

I am having a major issue with strongly typed datasets. I have been
using the Server Explorer in VS.net 2003 to add tables from the
database into a DataSet. I cannot access the rows or columns of some
of the DataTables. What can I do to fix this, or why can I not do
this? I cannot find any information on the topic.

Here is an example:
TypedDataSet ds = new TypedDataSet();

// fill tables

int id = ds.Customers[0].CustomerID; <-- For some tables, this works
int id = ds.Orders*** <-- sometimes I cannot access [int] or columns

I cannot access anything like ds.Orders.OrderIDColumn. They do not
show up in the IDE and I cannot build the project. It is like they do
not exist. Please help me fix this. Thanks!

Kyle
 
W

W.G. Ryan eMVP

When you say sometimes, does that mean taht sometimes you can as well?

I've seen something similar when you move a dataset in an existing assembly
to a new one with a different namespace, but if the lines are right next to
each other, that's weird. You can try to regen the dataset using xsd.exe
which may fix it. Another approach is to copy the XML definition inisde of
it, delete the dataaset, add a new one with the same name and paste the
definition in there.

Again make sure that the names are spelled correctly - no other syntax
errors and all taht good stuff but I'm guessing you've already done that.

BTW, if you use dataSet.Tables[TableIndex].Rows[RowIndex][ColumnIndex]; ---
does that work? I know that's not what yuo are asking, but I'm curious to
see if those are actually available or not.
 
K

Kyle

The two tables will be in the same DataSet, and come from the same
database. I can access the various fields specific to that table for
one table, but not the other. Oddly, I cannot access the row numbers
through ds.TableName[rownumber] at all for that "bad" table. It is
almost as if it is an untyped dataset.

I can access the data through the untyped
ds.Tables["TableName"].Rows[RowNo]["ColumnName"].

But, my work wants them all typed. So, it is not an option at this
point. :( I have had this happen with two different datasets, and the
same tables. The problem is 100% repeatable. I don't know if the DB
makes a difference, but we use Pervasive. Thanks for the help.

Kyle
 
W

W.G. Ryan eMVP

Ok, that helps out a lot. Try rebuilding the dataset. The back end has 0
bearing on this. Typed datasets are funny beasts - if you move them from
project to project the namespace difference can give you headaches. Delete
the current one and recreate it or regen it w/ xsd.exe. That should do it
for you.
 
K

Kyle

According to the IDE and itellisense, it has been defined as
TypedDataSet.OrdersDataTable.

Restarting the IDE and restarting the PC does not fix it.

Something interesting, is that if I define a new row by:
TypedDataSet.OrdersRow row = ds.Orders.NewRow();

Then, I can access column data through (assuming a new row had data):
int orderid = (int) row.OrderID;
string address = (string) row.Address1;

That is very odd. I cannot access the existing rows though, only th e
new row if I define a new row. Very odd. What do you think it could
be? Thanks.

Kyle
 
K

Kyle

I rebuilt the DataSet four ways:
1. Removed table, readded through server explorer.
2. Created new dataset and added through server explorer.
3. Created new project, and created a data adapter, and then generated
the dataset from that.
4. Regenerated the file with XSD.exe.

None of them worked. The table is generated exactly the same way,
except in #3, where it is defined as "Table" instead of "Orders" I
tried renaming that one in the XSD to "Orders" and the same problems
exist.

Kyle
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top