Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Error Try Catch (http://www.forosdelweb.com/f29/error-try-catch-481486/)

Coala 14/04/2007 18:29

Error Try Catch
 
El problema es que cuando apreto el boton que deveria generar el insert me arroja error el cual es capturado por try catch.
El procedimiento lo probe en el analizador de consulta y anda perfecto , me inserta simultaneamente en las dos tablas pero cuando lo ejecuto desde la aplicacion ,da error.
Tambien probe el procedimiento de forma individuales (uno que me ingresa los datos del cliente y otro que me ingresa los del vendedor) en donde a cada uno le asigno un boton para asi serciorarme que pueda ser y me inserta sin problemas.
Pero cuando de los dos procedimientos hago uno no funciona :'(
¿Estara mal realizado?


aqui el code para ver que puede haber mmalo.

Código:


Dim mi_conec As SqlClient.SqlConnection
        Dim mi_comando As SqlClient.SqlCommand

        Dim resp As DialogResult

        If MessageBox.Show("Los Datos se Grabaran estas Seguro ", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) = DialogResult.Yes Then

            Dim mi_consulta As String = "execute cliente_ingresa_cliente '" & TextBox7.Text.Trim & "','" & TextBox1.Text.Trim & "','" & TextBox2.Text.Trim & "','" & TextBox3.Text.Trim & "','" & ComboBox3.Text.Trim & "','" & TextBox5.Text.Trim & "','" & ComboBox2.Text.Trim & "','" & TextBox10.Text.Trim & "','" & TextBox9.Text.Trim & "',"
            MessageBox.Show(mi_consulta)'para ver que estoy mandando



            Try

                mi_conec = New SqlClient.SqlConnection(cadena_conec)
                mi_comando = New SqlClient.SqlCommand

                mi_conec.Open()

                mi_comando.CommandType = CommandType.Text
                mi_comando.CommandText = mi_consulta
                mi_comando.Connection = mi_conec

                If mi_comando.ExecuteNonQuery Then
                    MessageBox.Show(" Proceso Realizado Exitosamente ", "Ingreso de Datos ", MessageBoxButtons.OK, MessageBoxIcon.Information)

                Else
                    MessageBox.Show("Error En el Ingreso de Datos", "Ingreso De Datos", MessageBoxButtons.OK, MessageBoxIcon.Error)

                End If

            Catch ex As SqlException
                MessageBox.Show("Error de Acceso , es Posible que el codigo del de Pedido ya Exista", "Mantención", MessageBoxButtons.OK, MessageBoxIcon.Error) 'AQUI CAPTURA SIEMPRE EL ERROR , Y NINGUN ID ESTA REPETIDO
            Finally
                If Not mi_comando Is Nothing Then mi_comando.Dispose()
                If Not mi_conec Is Nothing Then mi_conec.Dispose()
            End Try

        Else
            MessageBox.Show("No has Grabado Datos", "Mantención", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)

        End If

y este es el procedimiento ,Los Pk para la tabla cliente es id_cliente y para vendedor id_vendedor

Código:


CREATE  procedure cliente_ingresa_cliente
(
@id_cliente char(3),@nombre_cliente char(12),@apellido_cliente char(12),
@direccion_cliente char(12),@comuna_cliente char(20),
@telefono_cliente char(12),@fpago_cliente char(20),

@id_vendedor char (2),@nombre_vendedor char(12)

)
as
begin

insert into  CLIENTE 
        (
        ID_CLIENTE,NOM_CLIENTE, APELLIDO_CLIENTE,
        DIRECCION_CLIENTE, COMUNA_CLIENTE,
        TELEFONO_CLIENTE,PAGO_CLIENTE
       
        )
values
        (
              @id_cliente,@nombre_cliente,@apellido_cliente,
        @direccion_cliente,@comuna_cliente ,
        @telefono_cliente,@fpago_cliente
        )

insert into VENDEDOR
        (
        ID_VENDEDOR,NOM_VENDEDOR
        )
        values
        (
        @id_vendedor,@nombre_vendedor
        )

end
GO


Coala 14/04/2007 21:10

Re: Error Try Catch
 
Quien me echa una manito :-) .No se que pueda ser :'(

freegirl 15/04/2007 05:10

Re: Error Try Catch
 
Cita:

El problema es que cuando apreto el boton que deveria generar el insert me arroja error el cual es capturado por try catch.
podrías poner el error que te aparece?

saludos

Coala 15/04/2007 09:13

Re: Error Try Catch
 
Mas bien no es un Error ( que se cierre la aplicacion,que no siga ejecutandose y cosas asi) .
El tema Es que Aqui siempres entra , lo he probado con id que no estan en la base de datos y igual entra aca

Cita:

Iniciado por Coala (Mensaje 1968380)
[CODE]

Catch ex As SqlException
MessageBox.Show("Error de Acceso , es Posible que el codigo del de Pedido ya Exista", "Mantención", MessageBoxButtons.OK, MessageBoxIcon.Error) 'AQUI CAPTURA SIEMPRE EL ERROR , Y NINGUN ID ESTA REPETIDO
Finally




erick_arcini 16/04/2007 09:24

Re: Error Try Catch
 
Por que creas un procedimiento almacenado?, no te es más fácil usar solo los inserts?

[EDIT] Puede ser, ahorita que revise de nuevo tu código lo que estas realizando es crear un nuevo procedimiento almacenado cada que ejecutas esa parte de tu código en VB, en este caso, como ya lo tienes creado, el error que te manda es, supongo, que estas duplicando un procedimiento y no puede ejecutar la acción, lo recomendable en este caso es que tu procedimiento lo llames "EXEC tu_procedimiento" el la parte del CommandText

Coala 16/04/2007 10:42

Re: Error Try Catch
 
si bien lo puedo realizar con insert por un tema de "no tener tanto codigo amontonado" realizo procedimientos aparte que asi la aplicacion se demora menos en realizar las consulta.

Lo extraño es que esto me pasa solo cuando trato de hacer los insert a las dos tablas.Me explico si le hago el insert solo ingresando los datos de cliente (nombre,apellido,telefono etc) no hay drama y puedo ejecutar ese procedimiento. y cuando hago lo mesmo con el vendedor y inserto su (id y nombre) tampoco drama. Pero cuando trato de hacer un insert para los dos, queda en try catch.

Uffff , nose que es :S

erick_arcini 16/04/2007 11:37

Re: Error Try Catch
 
Puedes poner en tu messagebox lo siguiente:

Código:

MessageBox.Show(ex.Message)
Para saber bien cual es el error.

Coala 16/04/2007 12:47

Re: Error Try Catch
 
Ya lo solucione , revise los procedimientos en el analizador de consulta y no tenia problemas.Entonces me fui al visual y probe todos los procedimientos por separado el que me ingresaba datos de cliente,vendedor y me funcionaban perfecto. Luego probe el que me insertaba en los dos. Y daba error , el error era que al final de los parametros que estaba mandando ("execute PEDIDO_INGRESA_PEDIDO " & TextBox7.Text.Trim & ",'" & TextBox1.Text.Trim & "',..................) estba mandando una maldita "," coma demas .


Uff que tonto fui ,pero ya lo pille

Gracias por la ayuda, se ganaron unas caritas :-) :-)

xknown 16/04/2007 12:59

Re: Error Try Catch
 
Es muy mala idea ejecutar sentencias SQL de esa forma (concatenar valores), ese código es altamente vulnerable a SQL Injection. Lee algún tutorial de ADO.NET para que veas como se debería hacer llamadas a procedimientos almacenados y como usar consultas parametrizadas.

Saludos

Coala 16/04/2007 13:27

Re: Error Try Catch
 
Cita:

Iniciado por xknown (Mensaje 1970310)
Es muy mala idea ejecutar sentencias SQL de esa forma (concatenar valores), ese código es altamente vulnerable a SQL Injection. Lee algún tutorial de ADO.NET para que veas como se debería hacer llamadas a procedimientos almacenados y como usar consultas parametrizadas.

Saludos

Uuuuu, Muy interesante tu sugerencia , Aunque es un formulario windows la aplicacion , deveras tienes mucha razon me puse ah leer un poquitin sobre "SQL Injection" y deveras es vulnerable.Gracias voy ah ver que se puede hacer.


La zona horaria es GMT -6. Ahora son las 20:30.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.