Usuario
Ejecutar un SP desde Visual basic con SQL 2008

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
- Cambiado Alberto López Grande (qwalgrande) domingo, 8 de abril de 2012 21:37 Es una pregunta más de Visual Basic que de SQL Server (De:SQL Server)
- Cambiado Enrique M. Montejo lunes, 9 de abril de 2012 5:36 VB 6.0 (De:Lenguaje VB.NET)
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 -
-
pero entonces te has equivocado de foro deberias ahcer la pregunta aqui
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
-
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