Foros del Web » Programación para mayores de 30 ;) » .NET »

No se controló MySqlException

Estas en el tema de No se controló MySqlException en el foro de .NET en Foros del Web. Hola. En el siguiente procedimiento me da el error "There is already an open DataReader associated with this Connection which must be closed first." Según ...
  #1 (permalink)  
Antiguo 10/11/2011, 07:07
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años, 7 meses
Puntos: 3
No se controló MySqlException

Hola. En el siguiente procedimiento me da el error "There is already an open DataReader associated with this Connection which must be closed first."

Según entiendo me dice que el DataReader está abierto.

Código:
    Private Sub TxCalle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxCalle.TextChanged
        BuscaCalle()
    End Sub
Código:
    Private Sub BuscaCalle()
        LaCalle.Text = String.Empty
        If Len(TxCalle.Text) > 0 Then
            Dim sql As MySqlCommand = New MySqlCommand
            sql.Connection = Conexion
            If Len(TxLetra.Text) > 0 Then
                sql.CommandText = "SELECT * FROM calles WHERE id = " & TxCalle.Text & " AND letra = '" & TxLetra.Text & "'"
            Else
                sql.CommandText = "SELECT * FROM `calles` WHERE id = '" & TxCalle.Text & "' AND letra = ''"
            End If
            sql.CommandType = CommandType.Text

            Dim dr As MySqlDataReader
            dr = sql.ExecuteReader()    'Acá me muestra el error
            If dr.HasRows Then
                While dr.Read()
                    LaCalle.Text = dr("calle").ToString
                End While
            Else
                LaCalle.Text = "INEXISTENTE"
            End If
            sql = Nothing
            dr.Close()
            dr = Nothing
        End If
    End Sub
Si se genera mediante teclado el evento TextChanged no me da error, pero si a TxCalle le asigno un valor mediante TxCalle.Text =CStr(1) si me da error.


Gracias desde ya por las respuestas.
Saludos

Última edición por ci2000; 10/11/2011 a las 07:23
  #2 (permalink)  
Antiguo 10/11/2011, 07:54
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: No se controló MySqlException

Hola ci2000 mmm dejame ver bien... cometí un error al comentar por eso edito, no tienes otra funcion aparte de este que use un reader?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 10/11/2011, 08:05
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: No se controló MySqlException

Prueba haciendo esto :
Código vb:
Ver original
  1. Using dr As MySqlDataReader = sql.ExecuteReader
  2.  
  3.             If dr.HasRows Then
  4.                 While dr.Read()
  5.                     LaCalle.Text = dr("calle").ToString
  6.                 End While
  7.             Else
  8.                 LaCalle.Text = "INEXISTENTE"
  9.             End If
  10.  
  11.         End Using
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 10/11/2011, 09:37
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años, 7 meses
Puntos: 3
Respuesta: No se controló MySqlException

Aquaventus.
Con el código que me enviaste me sigue dando el mismo error.

Pongo el código completo del procedimiento dónde asigno el valor a TxCalle. Aquí si uso otro reader.

Código:
    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        Dim sql As MySqlCommand = New MySqlCommand
        Dim dr As MySqlDataReader

        If LaDepartamento.Text = "INEXISTENTE" Or Len(LaDepartamento.Text) = 0 Then
            MsgBox("Verifique el departamento", vbCritical, "Atención")
            TxDepartamento.Focus()
            Exit Sub
        End If

        If LaLocalidad.Text = "INEXISTENTE" Or Len(LaLocalidad.Text) = 0 Then
            MsgBox("Verifique la localidad", vbCritical, "Atención")
            TxLocalidad.Focus()
            Exit Sub
        End If

        TxBlock.Text = IIf(Len(Trim(TxBlock.Text)) = 0, 0, TxBlock.Text).ToString
        TxUnidad.Text = StrDup(4 - Len(Trim(TxUnidad.Text)), "0") & TxUnidad.Text
        TxParte.Text = IIf(Len(Trim(TxParte.Text)) = 0, 0, TxParte.Text).ToString

        sql.Connection = Conexion
        sql.CommandText = "SELECT * FROM inmuebles WHERE iddepartamento = '" & TxDepartamento.Text & "' AND idlocalidad = '" & TxLocalidad.Text & "' AND padron = '" & TxPadron.Text & "' AND block = '" & TxBlock.Text & "' AND unidad = '" & TxUnidad.Text & "' AND parte = '" & TxParte.Text & "'"
        sql.CommandType = CommandType.Text
        dr = sql.ExecuteReader()
        If dr.HasRows Then
            While dr.Read()
                TxCalle.Text = CStr(1)
            End While
            Agrega = False
        Else
            Agrega = True
        End If
        dr.Close()
        TabControl.Enabled = True
        sql = Nothing
        dr = Nothing

    End Sub
Sauldos

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.