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

[SOLUCIONADO] Utilizar un SP con Output de SQL en VB

Estas en el tema de Utilizar un SP con Output de SQL en VB en el foro de .NET en Foros del Web. Buen día, tengo mi SP en SQL de la siguiente manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original ALTER PROCEDURE [ dbo ] . [ SP_Output ...
  #1 (permalink)  
Antiguo 18/02/2013, 10:55
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Utilizar un SP con Output de SQL en VB

Buen día, tengo mi SP en SQL de la siguiente manera:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[SP_Output]
  2. (@id INT,@mensaje VARCHAR(200) output )
  3. AS
  4.  
  5. DELETE FROM T_Competencia
  6. WHERE ID=@id AND ID  NOT IN (SELECT DISTINCT id_competencia FROM t_gruporelacion)
  7.  
  8. IF @@rowcount > 0
  9. BEGIN
  10. SET @mensaje='Se borro la tienda con ID: ' + CONVERT(VARCHAR(10),@id)
  11. END
  12. ELSE
  13. IF @ID NOT IN(SELECT ID FROM T_Competencia)
  14. SET @mensaje='La tienda no existe'
  15. ELSE
  16.  SET @mensaje='Error: La tienda tiene relacion con ID ' + CONVERT(VARCHAR(10),@id)

y lo ejecuto asi:

Código SQL:
Ver original
  1. DECLARE @mensaje VARCHAR(200);
  2. EXEC sp_output '10', @mensaje output
  3.  
  4. SELECT @mensaje

Bien lo que yo quiero es llevarlo a VB y que imprima los mismos mensajes, tenia mi codigo asi que me mostraba los mensajes como Select de otro SP que si me funciona correctamente y realiza las mismas operaciones:

Código vb:
Ver original
  1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  2.         id = TextBox4.Text
  3.         res = MessageBox.Show("Desea borrar la tienda?", "Tienda Competencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
  4.  
  5.         If res = vbYes Then
  6.             sql = " exec sp_Borra_Competencia " + id + ""
  7.             conectar()
  8.             com = New SqlClient.SqlCommand(sql, conexion)
  9.             dr = com.ExecuteReader
  10.             If dr.Read Then
  11.                 MsgBox(dr(0).ToString())
  12.  
  13.  
  14.             End If
  15.         End If
  16.         llenar_grid2()
  17.  
  18.  
  19.     End Sub

Podria modificar mi codigo para uitlizar el output? Gracias de ante mano saludos!
  #2 (permalink)  
Antiguo 19/02/2013, 10:57
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Utilizar un SP con Output de SQL en VB

Urge respuesta u.u
  #3 (permalink)  
Antiguo 20/02/2013, 11:14
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 1 mes
Puntos: 58
Respuesta: Utilizar un SP con Output de SQL en VB

Hola que tal, por que no haces que el SP regrese el valor directo sin el OUTPUT.

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[SP_Output]
  2.     (@id INT)
  3.     AS
  4.  
  5.      DECLARE @mensaje VARCHAR(200) output
  6.  
  7.     DELETE FROM T_Competencia
  8.     WHERE ID=@id AND ID  NOT IN (SELECT DISTINCT id_competencia FROM t_gruporelacion)
  9.      
  10.     IF @@rowcount > 0
  11.     BEGIN
  12.             SELECT @mensaje='Se borro la tienda con ID: ' + CONVERT(VARCHAR(10),@id)
  13.     END
  14.     ELSE
  15.     IF @ID NOT IN(SELECT ID FROM T_Competencia)
  16.            SELECT @mensaje='La tienda no existe'
  17.     ELSE
  18.            SELECT @mensaje='Error: La tienda tiene relacion con ID ' + CONVERT(VARCHAR(10),@id)

En C#, lo que hago es que lo leo en el READER y con eso muestro la información
  #4 (permalink)  
Antiguo 20/02/2013, 11:19
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Utilizar un SP con Output de SQL en VB

Te agradesco enormemente tu tiempo drako_darpan, lo que sucede es que ya lo hice mediante select como tu me das la opcion y de echo es el mismo codigo del SP que tengo al que me proporcionas, sin embargo "me pidieron" que hiciera la misma operacion (borrar) mediante 3 store procedure diferente: select, output y return, hasta ahorita llevo el primero que es de SELECT, me falta el de output que proporcione y tambien el de RETURN, si me pudieras ayudar con cualquiera de los dos, SP del return :):

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[SPReturn]
  2. (@id nvarchar(50))  
  3. AS  
  4. DELETE FROM  T_Competencia  
  5. WHERE ID=@id AND ID  NOT IN (SELECT DISTINCT id_competencia FROM t_gruporelacion)  
  6.    
  7. IF @@rowcount > 0  RETURN 0
  8.  
  9. ELSE RETURN 1

Y te enseño el codigo de VB que me funciono para el Store procedure de los SELECT:

Código vb:
Ver original
  1. id = TextBox4.Text
  2.         res = MessageBox.Show("Desea borrar la tienda?", "Tienda Competencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
  3.  
  4.         If res = vbYes Then
  5.             sql = " exec sp_Borra_Competencia " + id + ""
  6.             conectar()
  7.             com = New SqlClient.SqlCommand(sql, conexion)
  8.             dr = com.ExecuteReader
  9.             If dr.Read Then
  10.                 MsgBox(dr(0).ToString())
  11.  
  12.  
  13.             End If
  14.         End If
  15.         llenar_grid2()

Ahí aplico el ExecuteReader que me mencionas :)
Gracias por tu tiempo!
  #5 (permalink)  
Antiguo 20/02/2013, 17:53
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 1 mes
Puntos: 58
Respuesta: Utilizar un SP con Output de SQL en VB

Hola que tal, bueno es necesario que sean 3 SP

Mi duda es, por que puedes hacer 1 SP, que mande llamar a los otros SP que necesitas, cosa que te ahorra mucho tiempo ( Este se me hace mas facil ).

También si vas a borrar información de tablas, puedes hacer un DELETE con un join y asi borrar la información que necesitas.

  #6 (permalink)  
Antiguo 21/02/2013, 10:34
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Utilizar un SP con Output de SQL en VB

De echo cual forma seria mas facil?
  #7 (permalink)  
Antiguo 28/02/2013, 11:26
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: Utilizar un SP con Output de SQL en VB

davidalonsso05 espero que ésto sea lo que necesites:

Tu SP quedaria asi(solo te falta agregar una linea de codigo):

ALTER procedure [dbo].[SP_Output]
(@id int,@mensaje varchar(200) output )
AS

DELETE FROM T_Competencia
WHERE ID=@id AND ID NOT IN (SELECT DISTINCT id_competencia FROM t_gruporelacion)

IF @@rowcount > 0
begin
SET @mensaje='Se borro la tienda con ID: ' + convert(varchar(10),@id)
end
else
IF @ID NOT IN(SELECT ID FROM T_Competencia)
SET @mensaje='La tienda no existe'
else
SET @mensaje='Error: La tienda tiene relacion con ID ' + convert(varchar(10),@id)

--Esta linea solo tendrias a agregarle
select @mensaje


Y en VB éste sería el código:

Dim Cmd As New SqlCommand
Dim mensaje As String
Cmd.Connection = CN
Cmd.CommandTimeout = 0
Cmd.CommandType = CommandType.StoredProcedure
Cmd.CommandText = "SP_Output"
Cmd.Parameters.Add("@id", SqlDbType.Int).Value = "Valor que tendrias a pasarle"

Dim vlmsj As SqlParameter = _
New SqlParameter("@mensaje", SqlDbType.VarChar, 200)
vlmsj.Direction = ParameterDirection.Output
Cmd.Parameters.Add(vlmsj)

CN.Open()
mensaje = Cmd.ExecuteScalar()
CN.Close()

MsgBox(mensaje)


Espero y sea lo que buscabas, Gracias.
  #8 (permalink)  
Antiguo 04/03/2013, 08:48
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Utilizar un SP con Output de SQL en VB

Gracias Cvilla90 me funciono muy bien tu respuesta y disculpa por la tardanza en contestar, gracias me sirvio mucho!!!!

Etiquetas: output, sql, vb
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:34.