Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: zapala76 en 25 Octubre 2011, 21:05 pm



Título: Insertar en BD
Publicado por: zapala76 en 25 Octubre 2011, 21:05 pm
Hola, quería consultar como se podría hacer para que me salga un mensaje en c# si se inserto el registro, ya que al presionar el boton no me sale ningun mensaje de error y el registro no se inserta en la base de datos. Gracias y saludos.-


Título: Re: Insertar en BD
Publicado por: s00rk en 26 Octubre 2011, 00:52 am
Si deceas un poco de ayuda porfavor muestra lo que llevas, para asi poder ayudarte en tus problemas.

Sobre lo que sucede intenta checar en modo debug y deterner ahi en donde haces la inserccion para checar los datos.


Título: Re: Insertar en BD
Publicado por: seba123neo en 26 Octubre 2011, 03:21 am
con MessageBox, pero pone el codigo que usas...


Título: Re: Insertar en BD
Publicado por: zapala76 en 26 Octubre 2011, 03:38 am
Está bien, tienen razón es mejor con código, para que se entienda mejor el tema es que al apretar el btn aceptar no hace nada, y que si no inserta, debido a que esta bien que no inserte, me largue un mensaje informando que no pudo insertar, acá va el código:

Código
  1. public void ModificarUsuario(string nombre, string apellido, string estado,
  2.            DateTime fecha_alta, string rol, string legajo)
  3.        {
  4.  
  5.  
  6.            if (Conexion.conectar())
  7.            {
  8.                SqlCommand modifcom = new SqlCommand("modifUsuario", Conexion.conexion);
  9.                modifcom.CommandType = CommandType.StoredProcedure;
  10.  
  11.                modifcom.Parameters.Add("@nombre", SqlDbType.NVarChar);
  12.                modifcom.Parameters.Add("@apellido", SqlDbType.NVarChar);
  13.                modifcom.Parameters.Add("@estado", SqlDbType.NVarChar);
  14.                modifcom.Parameters.Add("@fecha_alta", SqlDbType.DateTime);
  15.                modifcom.Parameters.Add("@rol", SqlDbType.NVarChar);
  16.                modifcom.Parameters.Add("@legajo", SqlDbType.NVarChar);
  17.  
  18.  
  19.                modifcom.UpdatedRowSource = UpdateRowSource.None;
  20.                modifcom.Parameters[0].Value = nombre;
  21.                modifcom.Parameters[1].Value = apellido;
  22.                modifcom.Parameters[2].Value = estado;
  23.                modifcom.Parameters[3].Value = fecha_alta;
  24.                modifcom.Parameters[4].Value = rol;
  25.                modifcom.Parameters[5].Value = legajo;
  26.  
  27.  
  28.                modifcom.ExecuteNonQuery();
  29.  
  30.  
  31.  
  32.            }
  33.    }
  34.  
  35.  
  36. private void btn_acep_Click(object sender, EventArgs e)
  37.        {
  38.  
  39.            RepUsuario moddif_user = new RepUsuario();
  40.            moddif_user.ModificarUsuario(txt_modfNom.Text, txt_modifApe.Text, cmb_modifEstado.Text,
  41.                dtp_modifAF.Value, cmb_modifRol.Text, txt_modifLegajo.Text);
  42.  
  43.        }

Y el store procedure:

Código
  1. SET ANSI_NULLS ON
  2. SET QUOTED_IDENTIFIER ON
  3. GO
  4. ALTER PROCEDURE [dbo].[modifUsuario] (
  5. @nombre CHAR(30),
  6. @apellido CHAR(30),
  7. @fecha_alta datetime,
  8. @rol CHAR(20),
  9. @legajo CHAR(20),
  10. @estado CHAR(20),
  11. )
  12. AS SET nocount ON
  13. BEGIN try
  14. UPDATE usuarios SET nombre = @nombre, apellido = @apellido,
  15. fecha_alta = @fecha_alta, rol = @rol, legajo = @legajo,
  16. estado = @estado WHERE apellido = @apellido

Muchas Gracias.-


Título: Re: Insertar en BD (Solucionado)
Publicado por: zapala76 en 26 Octubre 2011, 17:33 pm
Al encontré la solucion modificando el stored procedure de esta forma:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[modifUsuario] (
@idUsuario int,
@nombre char(30),
@apellido char(30),
@fecha_alta datetime,
@rol char(20),
@legajo char(20),
@estado char(20),
@respuesta int output
)

as set nocount on

begin

update usuarios set nombre = @nombre, apellido = @apellido,
fecha_alta = @fecha_alta, rol = @rol, legajo = @legajo,
estado = @estado where idUsuario = @idUsuario
if @@rowcount > 0

set @respuesta=1
 else
set @respuesta=0

return @respuesta
PRINT 'Valor de la respuesta: ' + CONVERT(CHAR(6),@respuesta)
end

y en el codigo le puse asi y funciona:

public void ModificarUsuario(int id, string nombre, string apellido, string estado,
            DateTime fecha_alta, string rol, string legajo)
        {


            if (Conexion.conectar())
            {
                try
                {
                    SqlCommand modifcom = new SqlCommand("modifUsuario", Conexion.conexion);
                    modifcom.CommandType = CommandType.StoredProcedure;

                    modifcom.Parameters.Add("@idUsuario", SqlDbType.Int);
                    modifcom.Parameters.Add("@nombre", SqlDbType.NVarChar);
                    modifcom.Parameters.Add("@apellido", SqlDbType.NVarChar);
                    modifcom.Parameters.Add("@estado", SqlDbType.NVarChar);
                    modifcom.Parameters.Add("@fecha_alta", SqlDbType.DateTime);
                    modifcom.Parameters.Add("@rol", SqlDbType.NVarChar);
                    modifcom.Parameters.Add("@legajo", SqlDbType.NVarChar);
                    modifcom.Parameters.Add("@respuesta", SqlDbType.NVarChar);
                    modifcom.Parameters["@respuesta"].Direction = ParameterDirection.Output;


                    modifcom.UpdatedRowSource = UpdateRowSource.None;
                    modifcom.Parameters[0].Value = id;
                    modifcom.Parameters[1].Value = nombre;
                    modifcom.Parameters[2].Value = apellido;
                    modifcom.Parameters[3].Value = estado;
                    modifcom.Parameters[4].Value = fecha_alta;
                    modifcom.Parameters[5].Value = rol;
                    modifcom.Parameters[6].Value = legajo;
                    modifcom.Parameters[7].Value = "";

                    modifcom.ExecuteNonQuery();
                    string valor = modifcom.Parameters["@respuesta"].Value.ToString();
                    if (valor == "1")
                    {
                        MessageBox.Show("El usuario se actualizó correctamente!");
                    }
                    else
                    {
                        MessageBox.Show("No se pudo actualizar el usuario");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("El legajo le pertenece a otro usuario");
                }
                finally
                {
                    Conexion.conexion.Close();
                }
              }
           
    }

Muchas gracias y saludos