Search VB 2010

Showing posts with label There is already an open DataReader associated with this Command which must be closed first. Show all posts
Showing posts with label There is already an open DataReader associated with this Command which must be closed first. Show all posts

Friday, December 09, 2011

Solution - There is already an open DataReader associated with this Command which must be closed first.

VB 2010

Problem : There is already an open DataReader associated with this Command which must be closed first.
Cause : Having more than 1 dataReader result set working at the same time .
Solution : In my solution example, i work with SqlServer2000 and VB.Net 2005 
The Example Project can be downloaded at the end of this post :
It contains (SqlServer2000 DataBase - VB.Net Project)
The example shows how to navigate (First Record - Next Record) using ADO.Net 2.0 Online-Mode using SqlClient DataReader ...
Sql Database Name : Market
Sql Database Table : Market.Info
Server Name : evry1falls
(in order to see the example correctly, you'll have to Import the Database 'Market' into your sqlserver2000 Enterprise Manager)
Photo1 : Application Final Design
Photo 1












Photo2 : Table Structure
Photo 2







Photo3 : Codes
Photo 3






Photo4 : Codes
Photo 4







Photo5 : Codes
Photo 5








Now if you run the project and tried to navigate using (First) or (Next) you will get the Exception :
There is already an open DataReader .....
so the solution would be :
Trap the Exception that shows in the (SelectedIndexChanged) Event of the (ComboBox) like this :

and the same for the (Next) Button ..
now you can Navigate and search using combobox safely without exceptions ..

Note :
- Source code will give you exception and you will have to re-write the solution by yourself  as shown above .
- The Folder(Bin/Debug) Includes (Back-Up) use it to restore the (Market Database) in your sqlserver2000
- use the namespace (evry1falls) as new server Registration .

Download Source Code : MediaFire Link

Using MS Access 2003/2007/2010

- In case of using Microsoft Access Database, OleDb.OleDbDataReader with OleDb.OleDbCommand.

The work around or the solution would be :
Always create a new Instance of the OleDbCommand, I.e

Visual Basic Courses - Share