Hi,
I'm getting the following error whenever my code creates a DataTableReader from a valid DataTable Object:
"DataTableReader is invalid for current DataTable 'TempTable'."
The thing is, if I reboot my machine, it works fine for an undetermined amount of time, then dies with the above. The code that throws this error could have been working fine for hours and then: bang. you get this error. It's not limited to one line either; it's every single location that a DataTableReader is used. Also, this error does NOT occur on the production web server - ever.
This is an example of one of the lines where it falls over:
If I step over this line, I get this:
However, if I do this in the immediate window:
I get no problems. Same goes if I actually use that line in the code.
This has been driving me nuts for the best part of a week, and I've failed to find anything on Google that could help (as I'm pretty positive this isn't a coding issue).
Some technical info:
DEV Box: Vista 32bit (with all current windows updates) Visual Studio 2008 v9.0.30729.1 SP dotNet Framework 3.5 SP1
SQL Server: Microsoft SQL Server 2005 Standard Edition- 9.00.4035.00 (X64) Windows 2003 64bit (with all current windows updates)
Web Server: Windows 2003 64bit (with all current windows updates)
any help, ideas, or advice would be greatly appreciated!
Cheers, Ian
UPDATE 1:
Ok - Have tried the following now with no success:
1: Rebooted 2: SFC / ScanNow 3: Changed SQL Servers 4: Tried a different method that uses DataTableReaders 5: Cleaned solution
The only thing I did find that worked was copy & pasting the code from the main Visual studio instance, into another which had a simple console app. This then worked as expected (queried database and got results into a dataTable, created a datatablereader on that table, then queried hasrows before calling .Read()... All of which worked.
I am struggling to see what could cause this, as there are NO code faults - i'm 100% certain, as it runs perfectly when published to the webserver.
UPDATE 2
OK.. here's a bit more funkiness:
This block of code fails on the final line shown (tr.HasRows) as we already know:
However, the first line calls into this method:
Which in turn, calls this method:
Within this last method, I've simply added a bit of code at the bottom to create a DataTableReader from the DataTable we are about to return, and try the "HasRows" call to see if the same issue would occur...
and it doesn't!
If you step through the code, it creates the reader, sees that it has rows, set's dtr = dtr, returns the datatable to the "getWarehouse" function, which in turn returns the table to the calling code... which then gets the original error.
I know it's not the greatest code, but it should work.. especially as it works a bit lower in the stack!