none
Error la llamar un procedimiento RRS feed

  • Pregunta

  •  La siguiente llamada Comprobar("DUDU") la hago desde un formulario al correspondiente procedimiento descrito en un módulo, y deseo saber porqué da error en la instrucción  dr = cmd.ExecuteReader(), sin embargo no da error si la ejecuto como sigue:  

    cmd.CommandText = "SELECT NOMBRE, PUNTOS, NIVEL FROM PERSONAS"

    Public Sub Comprobar(ByVal Identificativo As String)
            cmd.Connection = conn
            cmd.CommandType = CommandType.Text
            Situacion = 0
            If Identificativo <> "" Then
                cmd.CommandText = "SELECT NOMBRE, PUNTOS, NIVEL FROM PERSONAS where nivel = " + Identificativo + " order by puntos desc"
            End If
            Try
                dr = cmd.ExecuteReader()      '  aquí da error (0x80040E10) No se han especificado valores para algunos de los parámetros requeridos
                If dr.HasRows Then
                    While dr.Read
                        Situacion = +1
                        If PuntosFinales > dr(1).ToString Then
                            Situador()
                            dr.Close()
                            Exit Sub
                        End If
                    End While
                End If
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
            dr.Close()
        End Sub

    Alguien me puede ayudar?             Muchas gracias

    Alberto Sánchez

    jueves, 20 de junio de 2013 15:16

Todas las respuestas

  • hola

    deberias suar algo como ser

    Public Sub Comprobar(ByVal Identificativo As String)
    	
    	Try
    		cmd.CommandText = "SELECT NOMBRE, PUNTOS, NIVEL FROM PERSONAS where ((@Identificativo IS NULL) OR (nivel = @Identificativo)) order by puntos desc"
    		cmd.Connection = conn
    		cmd.CommandType = CommandType.Text
    		Situacion = 0
    		If Identificativo = "" Then
    			cmd.Parameters.AddwithValue("@Identificativo", DBNull.Value)
    		Else
    			cmd.Parameters.AddwithValue("@Identificativo", Identificativo)
    		End If
    	
    		dr = cmd.ExecuteReader()
    
    		While dr.Read()
    			Situacion = +1
    			If PuntosFinales > dr(1).ToString Then
    				Situador()
    				dr.Close()
    				Exit Sub
    			End If
    		End While
    
    	Catch ex As Exception
    		MsgBox(ex.ToString)
    	End Try
    
    End Sub

    o sea tienes que usar parametros

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 20 de junio de 2013 16:05
  • Ya funciona perfectamente, muchisimas gracias

    Alberto Sánchez

    viernes, 21 de junio de 2013 15:37