Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .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 (csharp) [Seleccionar]
public void ModificarUsuario(string nombre, string apellido, string estado,
            DateTime fecha_alta, string rol, string legajo)
        {


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

                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.UpdatedRowSource = UpdateRowSource.None;
                modifcom.Parameters[0].Value = nombre;
                modifcom.Parameters[1].Value = apellido;
                modifcom.Parameters[2].Value = estado;
                modifcom.Parameters[3].Value = fecha_alta;
                modifcom.Parameters[4].Value = rol;
                modifcom.Parameters[5].Value = legajo;
               
               
                modifcom.ExecuteNonQuery();
               

                   
            }
    }


private void btn_acep_Click(object sender, EventArgs e)
        {

            RepUsuario moddif_user = new RepUsuario();
            moddif_user.ModificarUsuario(txt_modfNom.Text, txt_modifApe.Text, cmb_modifEstado.Text,
                dtp_modifAF.Value, cmb_modifRol.Text, txt_modifLegajo.Text);
           
        }


Y el store procedure:

Código (sql) [Seleccionar]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[modifUsuario] (
@nombre char(30),
@apellido char(30),
@fecha_alta datetime,
@rol char(20),
@legajo char(20),
@estado char(20),
)
as set nocount on
begin try
update usuarios set nombre = @nombre, apellido = @apellido,
fecha_alta = @fecha_alta, rol = @rol, legajo = @legajo,
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