Principales respuestas
Varios Datareader abiertos con do while

Pregunta
-
Buenas tardes a todos, les comento mi duda; estoy desarrollando en VB.Net 2013 con una DB en Access, no habia tenido problema al analizar variables dtareader en un do while y en funcion de los datos de esa primera consulta realizar otra cunslta, esto dentro del mismo do while.
Bien es hora de migrar a SQL Server 2008, estoy revisando mi aplicacion y me topo con el problema, de que cuando ejecuta un query dentro de un do while con el que estoy recorriendo el datareader (obvio esta abierto) me dice que el Command esta asociado a otro DataReader que necesito cerrarlo primero, aun cuando estoy usando otra variable DataReader y otra variable Commnad, aun que si uso solo una connexion:
If txt_comp_pn.Text <> "" And txt_description.Text <> "" And cmb_comp_type.Text <> "" And cmb_gender.Text <> "" And cmb_cpa.Text <> "" And txt_comp_supplier.Text <> "" And cmb_sealed.Text <> "" _ And txt_cavities.Text <> "" And txt_cavities.Text <> "0" And cmb_tpa.Text <> "" And cmb_color.Text <> "" And txt_image_component.Text <> "" Then v_command.CommandText = "SELECT components.C_MWSI_PN, components.C_TYPE FROM components WHERE (((components.C_MWSI_PN)='" & txt_comp_pn.Text & "') AND ((components.C_TYPE)='" & cmb_comp_type.Text & "'));" v_reader = v_command.ExecuteReader v_esta = 0 If v_reader.Read Then v_reader.Close() 'v_reader = Nothing 'v_connexion.Close() 'v_connexion.Open() v_command.CommandText = "SELECT ADDITIONAL_COMP.A_LLAVE, ADDITIONAL_COMP.C_MWSI_PN FROM ADDITIONAL_COMP GROUP BY ADDITIONAL_COMP.A_LLAVE, ADDITIONAL_COMP.C_MWSI_PN HAVING (((ADDITIONAL_COMP.C_MWSI_PN)='" & txt_comp_pn.Text & "'));" v_reader_2 = v_command.ExecuteReader Do While v_reader_2.Read v_command_2.CommandText = "SELECT * FROM ADDITIONAL_COMP WHERE A_LLAVE=" & v_reader_2(0) & " AND A_MWSI_PN='" & v_reader_2(1) & "' ORDER BY A_ID" v_reader_3 = v_command_2.ExecuteReader ' aqui marca el error Do While v_reader_3.Read If IsDBNull(v_reader_3(3)) Then v_valor = "" Else v_valor = v_reader_3(3) Select Case v_reader_3(1) Case 1 If cmb_add_clip.Text = v_valor Then v_esta += 1 End Select Loop Loop End If End If
en la lineav_reader_3 = v_command_2.ExecuteReader
es donde me marca el error, si sierro la coneccion me manda otro mensaje que me dice que el DataReader no esta disponible, cuando trabajaba con Access no tenia este problema, espero explicarme y espero me puedan ayudar, saludos..!!!
Respuestas
-
Hola, para lo que necesitas debes establecer MARS en tu cadena de conexión.
como ejemplo de cadena de conexión tendrías (fijate la parte negrita)
Data Source=MSSQL; Initial Catalog=AdventureWorks; Integrated Security=SSPI; MultipleActiveResultSets=True
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta Brayan De La Cruz jueves, 13 de abril de 2017 3:18
- Marcado como respuesta thekikoski jueves, 13 de abril de 2017 13:59
Todas las respuestas
-
Hola, para lo que necesitas debes establecer MARS en tu cadena de conexión.
como ejemplo de cadena de conexión tendrías (fijate la parte negrita)
Data Source=MSSQL; Initial Catalog=AdventureWorks; Integrated Security=SSPI; MultipleActiveResultSets=True
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta Brayan De La Cruz jueves, 13 de abril de 2017 3:18
- Marcado como respuesta thekikoski jueves, 13 de abril de 2017 13:59
-
Hola, para lo que necesitas debes establecer MARS en tu cadena de conexión.
como ejemplo de cadena de conexión tendrías (fijate la parte negrita)
Data Source=MSSQL; Initial Catalog=AdventureWorks; Integrated Security=SSPI; MultipleActiveResultSets=True
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
Hola que tal, me ayudo mucho al activar el multipleactiveresultsets, muchas gracias.