none
Ejecutar un SP desde Visual basic con SQL 2008 RRS feed

  • Pregunta

  • Buenos dias tengo una aplicación que corre bien con SQL 2000 prto al usar SQL 2008 me da el siguiente mensaje  “ Can`t  assign value to output only parameter”, lo que deseo hacer es llenar un pantalla con los roles que tenga la base de datos en el momento de la consulta

    Private   qBDGrupos As rdoQuery

    Const SQLGrupos = "{? = call sp_helprole(?)}"

    ' Se averigua los grupos disponibles en la BD

    Set qBDGrupos = New rdoQuery

    With qBDGrupos

      .Prepared = True:  .SQL = SQLGrupos

      Set .ActiveConnection = ConexionRemota

      .rdoParameters(0).Direction = rdParamReturnValue

    End With

    Cuando llega acá me sale el mensaje de error “ Can`t  assign value to output only parameter”

    qBDGrupos(0) = Null

    Set rBDGrupos = qBDGrupos.OpenResultset

    lstGrupoSQL(1).Clear

    If IsNull(qBDGrupos(0)) Or qBDGrupos(0) = 0 Then

      Do

        If UCase(RTrim(rBDGrupos(0))) <> "PUBLIC" And UCase(Left(rBDGrupos(0), 3)) <> "DB_" Then

          lstGrupoSQL(1).AddItem RTrim(rBDGrupos(0))

        End If

        rBDGrupos.MoveNext

      Loop Until rBDGrupos.EOF

    Else

    End If


    Omar Gil

    domingo, 8 de abril de 2012 18:15

Todas las respuestas

  • pues si la idea es invocar a un stored procedure desde .net, no creo que sea el camino que tomas, porque deberias suar ado.net y no ado de vb6

    has programado con ado.net, no estoy muy seguro del input y output de ese SP que quieres usar pero el codigo seria

    Using cnn As SqlConnection = New SqlConnection("connection string")
        cnn.Open()
    
        Dim cmd As New SqlCommand("sp_helprole", cnn)
        cmd.CommandType = CommandType.StoredProcedure
       
        cmd.Parameters.AddWithValue("@rolename", txtRole.Text)
       
        Dim result As Integer = Convert.ToInt32(cmd.ExecuteScalar()) ' aqui recuperas el 0 o 1 de la respuesta del sp
    
    End Using

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 8 de abril de 2012 22:14
  • Buenas noches Leandro no es ADO.net por que es en visual basic 6, de todas formas muchas gracias por tu respuesta.

    Omar Gil

    lunes, 9 de abril de 2012 1:29
  • pero entonces te has equivocado de foro deberias ahcer la pregunta aqui

    Lenguaje VB 5/6

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 9 de abril de 2012 2:02
  • Creo que debes sustituir la sentencia Call por Exec y esta manera te correrá el query.

    lunes, 9 de abril de 2012 16:22
  • Hola david gracias por tu ayuda cuando lo cambio a Exec me da el siguiente mensaje  al pasar por aca

    Private   qBDGrupos As rdoQuery

    Const SQLGrupos = "{? = call sp_helprole(?)}"

    ' Se averigua los grupos disponibles en la BD

    Set qBDGrupos = New rdoQuery

    With qBDGrupos

      .Prepared = True:  .SQL = SQLGrupos

      Set .ActiveConnection = ConexionRemota

      .rdoParameters(0).Direction = rdParamReturnValue

    End With

    Cuando llega acá me sale el mensaje de error “ Can`t  assign value to output only parameter”

    ACA DA EL ERROR (S11005: [Microsoft] [ODBC SQL SERVER Driver] Tipo de parametro no valido), ahora que puede ser?

    qBDGrupos(0) = Null

    Set rBDGrupos = qBDGrupos.OpenResultset

    lstGrupoSQL(1).Clear

    If IsNull(qBDGrupos(0)) Or qBDGrupos(0) = 0 Then

      Do

        If UCase(RTrim(rBDGrupos(0))) <> "PUBLIC" And UCase(Left(rBDGrupos(0), 3)) <> "DB_" Then

          lstGrupoSQL(1).AddItem RTrim(rBDGrupos(0))

        End If

        rBDGrupos.MoveNext

      Loop Until rBDGrupos.EOF

    Else

    End If


    Omar Gil

    miércoles, 11 de abril de 2012 22:44