none
ERROR: no hay ningún dato disponible para la fila o columna

    Pregunta

  • tengo un problema resulta que cuando busco una placa de carro que no esta en la DB me deberia agarrar el ELSE del codigo pero en vez de eso me muestra un msj de que no se consigue ningun dato en la fila o columna y me muestra un error excepción en esta condicion: If dr.Read And dr.Item("estatus_carro") = "A" Then

    ayuda por favor

    Sub buscar()
            Try
                conecta.Open()
                comando = New OracleCommand("SELECT * FROM carros1 WHERE placa_carro='" & placa.Text & "'", conecta)
                Dim dr As IDataReader = comando.ExecuteReader
                If dr.Read And dr.Item("estatus_carro") = "A" Then
    
                    placa.Text = dr("placa_carro")
                    modelo.Text = dr("modelo_carro")
                    marca.Text = dr("marca_carro")
                    color.Text = dr("color_carro")
                    serialMotor.Text = dr("serial_motor")
                    numPuerta.Text = dr("num_puertas")
                    stockMin.Text = dr("stock_min")
                    If dr("tipo_carro") = "SINCRONICO" Then
                        sincronico.Checked = True
                    ElseIf dr("tipo_carro") = "AUTOMATICO" Then
                        automatico.Checked = True
                    End If
                    categoria.Text = dr("categoria")
                    Dim aux As DateTime = DateTime.ParseExact(dr("fecha_fabri"), "dd/MM/yyyy", CultureInfo.InvariantCulture)
                    fecha.Value = aux
                    MsgBox("busqueda exitosa", MsgBoxStyle.OkOnly, "busqueda")
                ElseIf dr.Item("estatus_carro") = "I" Then
                    resp = MsgBox("Registro Desactivado, Desea Activarlo?", MsgBoxStyle.YesNo, "INFORMACION")
                    If resp = vbYes Then
                        activar()
                    Else
                        bloqueo()
                    End If
    '' este es el ELSE que no me agarra
                Else
    
                    MsgBox("CARRO NO ENCONTRADO", MsgBoxStyle.Information, "INFORMACION")
                    resp = MsgBox("Desea Agregarlo?", MsgBoxStyle.YesNo, "INCLUIR")
                    If resp = vbYes Then
                        buscarInsertar.Text = "Incluir"
    
                    Else
                        buscarInsertar.Text = "Buscar"
                    End If
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                conecta.Close()
            End Try
        End Sub

    sábado, 18 de febrero de 2017 23:58

Respuestas

  • delap95,

    Intenta cambiar por la siguiente estructura:

    Dim dr As IDataReader = comando.ExecuteReader '¿No deberías usar la clase OracleDataReader?
    
    If dr.Read Then 'Existe un registro
    	If dr.Item("estatus_carro") = "A" Then
    		placa.Text = dr("placa_carro")
    		'...
    		MsgBox("busqueda exitosa", MsgBoxStyle.OkOnly, "busqueda")
    	ElseIf dr.Item("estatus_carro") = "I" Then
    		resp = MsgBox("Registro Desactivado, Desea Activarlo?", MsgBoxStyle.YesNo, "INF")
    		If resp = vbYes Then
    			activar()
    		Else
    			bloqueo()
    		End If
            Else
                    '¿Qué hacer aquí?
    	End If
    Else 'No se encontraron registros
    	MsgBox("CARRO NO ENCONTRADO", MsgBoxStyle.Information, "INFORMACION")
    	resp = MsgBox("Desea Agregarlo?", MsgBoxStyle.YesNo, "INCLUIR")
    	If resp = vbYes Then
    		buscarInsertar.Text = "Incluir"
    
    	Else
    		buscarInsertar.Text = "Buscar"
    	End If
    End If


    Si haces uso de las clases OracleConnection, OracleCommand, ¿por qué utilizas la interface IDataReader? ¿no deberías usar la clase OracleDataReader?


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 19 de febrero de 2017 0:13
  • También la condición puede definirse asi

    If dr.Read AndAlso dr.Item("estatus_carro") = "A" Then



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 20 de febrero de 2017 9:51

Todas las respuestas

  • delap95,

    Intenta cambiar por la siguiente estructura:

    Dim dr As IDataReader = comando.ExecuteReader '¿No deberías usar la clase OracleDataReader?
    
    If dr.Read Then 'Existe un registro
    	If dr.Item("estatus_carro") = "A" Then
    		placa.Text = dr("placa_carro")
    		'...
    		MsgBox("busqueda exitosa", MsgBoxStyle.OkOnly, "busqueda")
    	ElseIf dr.Item("estatus_carro") = "I" Then
    		resp = MsgBox("Registro Desactivado, Desea Activarlo?", MsgBoxStyle.YesNo, "INF")
    		If resp = vbYes Then
    			activar()
    		Else
    			bloqueo()
    		End If
            Else
                    '¿Qué hacer aquí?
    	End If
    Else 'No se encontraron registros
    	MsgBox("CARRO NO ENCONTRADO", MsgBoxStyle.Information, "INFORMACION")
    	resp = MsgBox("Desea Agregarlo?", MsgBoxStyle.YesNo, "INCLUIR")
    	If resp = vbYes Then
    		buscarInsertar.Text = "Incluir"
    
    	Else
    		buscarInsertar.Text = "Buscar"
    	End If
    End If


    Si haces uso de las clases OracleConnection, OracleCommand, ¿por qué utilizas la interface IDataReader? ¿no deberías usar la clase OracleDataReader?


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 19 de febrero de 2017 0:13
  • También la condición puede definirse asi

    If dr.Read AndAlso dr.Item("estatus_carro") = "A" Then



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 20 de febrero de 2017 9:51