Visual Basic.NET - Procedimiento Almacenado

   
Vista:

Procedimiento Almacenado

Publicado por Federico (1 intervención) el 23/08/2015 17:01:01
Hola a todos, en mi base de datos de SQL Server tengo el sig. procedimiento almacenado:

1
2
3
4
5
6
7
8
9
10
11
12
USE [almacen]
GO
/****** Object:  StoredProcedure [dbo].[anula_disminuir_stock]    Script Date: 23/08/2015 11:19:50 a.m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[anula_disminuir_stock]
@producto as integer,
@egresos as integer
as
update productos set stock=stock+@egresos where codigo=@producto

Por otro lado, en mi proyecto de Visual Net con Visual Studio 2013 tengo en un boton el sig. código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub btnquitar_articulo_Click(sender As Object, e As EventArgs) Handles btnquitar_articulo.Click
                Dim result As DialogResult
 
                result = MessageBox.Show("Realmente desea quitar los artículos seleccionados.", "Facturación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
 
                If result = DialogResult.OK Then
                    Try
                        For Each row As DataGridViewRow In dataarticulos.Rows
                            Dim marcado As Boolean = Convert.ToBoolean(row.Cells("Quitar").Value)
 
                            If marcado Then
                                Dim onekey As Integer = Convert.ToInt32(row.Cells("id_articulos").Value)
                                Dim vdb As New vArticulos
                                Dim func As New fArticulos
                                vdb.gid_articulos = onekey
 
                                vdb.gproducto = dataarticulos.SelectedCells.Item(2).Value
                                vdb.goperacion = dataarticulos.SelectedCells.Item(1).Value
                                vdb.gegresos = dataarticulos.SelectedCells.Item(9).Value
 
                                If func.anular_item_articulos(vdb) Then
                                    If func.anular_disminuir_stock(vdb) Then
 
                                    End If
                                Else
                                    MessageBox.Show("Se ha producido un error al quitar artículos.", "Facturación", MessageBoxButtons.OK, MessageBoxIcon.Information)
                                End If
                            End If
                        Next
                        Call mostrar_articulos()
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                Else
                    MessageBox.Show("Cancelando quitar artículos.", "Facturación", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Call mostrar_articulos()
                End If

Con el boton lo que logro es quitar de mi dataarticulos(DataGridView) las filas seleccionadas con la columna Quitar, es decir, selecciono desde esta columna las filas que quiero quitar, luego presiono el boton y las filas del dataarticulos desaparecen, hasta aca todo OK, lo que no logro es que funcione el procedimiento almacenado "anula_disminuir_stock" llamado con la funcion "anular_disminuir_stock", es decir, si la fila seleccionada, la columna "egresos" tiene el valor por ej "3", al quitarla del dataarticulos que este valor se sume luego al valor contenido en el campo "stock" de la tabla "productos". Por la dudas les pongo tambien la funcion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function anular_disminuir_stock(ByVal dts As vArticulos) As Boolean
        Try
            conectado()
            cmd = New SqlCommand("anula_disminuir_stock")
            cmd.CommandType = CommandType.StoredProcedure
 
            cmd.Connection = cnn
 
            cmd.Parameters.AddWithValue("@producto", dts.gproducto)
            cmd.Parameters.AddWithValue("@egresos", dts.gegresos)
 
            If cmd.ExecuteNonQuery Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
            Return False
        Finally
            desconectado()
        End Try
    End Function

Creo que en los códigos no esta el error sino en como estoy llamando al procedimiento, pero no logro darme cuenta.
Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco Antonio

Procedimiento Almacenado

Publicado por Francisco Antonio (5 intervenciones) el 24/08/2015 00:15:56
Proba con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Function DeleteRecords(ByVal tabla2Delete As String, ByVal condicion2Delete As String) As Boolean
        Dim Result As Boolean = True
        Dim com As New MySqlCommand
 
        If Not ConnectionState.Open Then
            DBase.OPEN_DB()
        End If
 
        Try
            com.Connection = DBase.cn
            com.CommandText = "DELETE FROM " + tabla2Delete + " WHERE " + condicion2Delete
            com.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.ToString())
            Result = False
        Finally
            com.Dispose()
        End Try
 
        Return Result
 
    End Function

Donde:
tabla2Delete = la tabla que tocas en el delete
condicion2Delete = la condicion del borrado

o simplemente has un "call storedprocedure(" & parametros &");"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Procedimiento Almacenado

Bueno no es mi estilo de programación esta, pero haré un esfuerzo por darte una luz, y al parecer tu problema está en esta parte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Public Function anular_disminuir_stock(ByVal dts As vArticulos) As Boolean
Try
conectado()
cmd = New SqlCommand("anula_disminuir_stock")
cmd.CommandType = CommandType.StoredProcedure
 
cmd.Connection = cnn
 
cmd.Parameters.AddWithValue("@producto", dts.gproducto)
cmd.Parameters.AddWithValue("@egresos", dts.gegresos)
 
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
 
 
y debería ser mas o menos así:
 
Public Function anular_disminuir_stock(ByVal dts As vArticulos) As Boolean
dim Result as boolean=false
Try
conectado()
cmd = New SqlCommand("anula_disminuir_stock")
cmd.CommandType = CommandType.StoredProcedure
 
cmd.Connection = cnn
 
cmd.Parameters.AddWithValue("@producto", dts.gproducto)
cmd.Parameters.AddWithValue("@egresos", dts.gegresos)
dim Ok as integer=cmd.ExecuteNonQuery
if Ok>0 then
   Result=true
end if
Catch ex As Exception
MsgBox(ex.Message)
Finally
desconectado()
End Try
Return Result
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar