none
Como hacer una actualización de datos de un datagriedview C# con base de datos SQL Server RRS feed

  • Pregunta

  • Buen día a todos, 

    Como puedo hacer una modificación de datos de una fila del datagriedview en el cual al seleccionar una fila del grid y presionar un botón me abre un formulario editor de datos conteniendo los datos a modificar, pero con la condición de que si no modificara algún campo de texto, me permita guardar el registro, porque al momento de guardar me alerta que el registro ya existe.   

    Tengo un método que verifica la existencia de la sig. manera:

    private bool ValueExistsNoSerie(string _Value)
            {
                return db.Registros.Any(x => x.No_serie.Equals(_Value)); 
            }

    Y de esta manera lo verifico mediante un proceso almacenado Y lo guardo con el método Click:

    private void btnEditar_Click(object sender, EventArgs e)
    {

    if (String.IsNullOrEmpty(txtNumeroSerie.Text.Trim())) { MessageBox.Show("Ingrese un número de serie"); return; } else if (ValueExistsNoSerie(txtNumeroSerie.Text.Trim())) { MessageBox.Show("El número de serie ya existe...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { updateTerminal(m_codigoDisp.ToString(), txtCodigoAnt.Text, m_dirMACantig, txtMAC.Text, m_dirIPantig, txtIP.Text, m_noSerieAntig, txtNumeroSerie.Text, Convert.ToInt32(cbMarca.SelectedValue), Convert.ToInt32(cbModelos.SelectedValue), Convert.ToInt32(cbSistemaOperativo.SelectedValue)); MessageBox.Show("Se modifico correctamente la terminal"); this.Close(); }

    }


    Quedo al pendiente de sus apoyo y observaciones para realizar este funcionamiento.

     


    JavierLg12

    jueves, 5 de julio de 2018 18:59

Todas las respuestas

  • Como le hago para hacer condiciones en las cajas de texto que al modificar un registro me permita guardarlo con código c#.

    ej: tengo 4 textbox y solo modifico 1 al momento de guardar me actualice, de un textbox modifico solo txtMAC y los demás los dejo igual ¿Que tendría que hacer para llevar acabo esta actualización?.


    JavierLg12

    viernes, 6 de julio de 2018 18:10
  • Hola JavierLg12:

    Puedes hacer una update dinámica.

    CREATE TABLE escena
    (id         INT IDENTITY(1, 1),
     dirMac     VARCHAR(100),
     dirmacAnti VARCHAR(100)
    );
    GO
    INSERT INTO escena
    (dirMac,
     dirmacAnti
    )
    VALUES
    ('aaaa:aaaa',
     'bbbb:bbbb'
    ),
    ('aaaa:cccc',
     'cccc:bbbb'
    );
    
    /* fin del escenario */
    
    GO
    CREATE PROCEDURE sp_dinamico_escena
    (@parametro   VARCHAR(100),
     @parametroid INT,
     @nomcampo    NVARCHAR(100)
    )
    AS
         DECLARE @consulta NVARCHAR(MAX);
         DECLARE @definicionParametros NVARCHAR(4000);
         SET @consulta = N'update ESCENA SET '+QUOTENAME(@NOMCAMPO)+'= @valor WHERE id = @idparametro';
         SET @definicionParametros = N'@valor varchar(100), @idparametro int';
         EXECUTE sp_executesql
                 @consulta,
                 @definicionParametros,
                 @valor = @parametro,
                 @idparametro = @parametroid;
         RETURN;
    
    /* la llamada al procedure, donde le paso lo que quiero actualizar, para que registro por su identificador, y para que columna */
         EXEC sp_dinamico_escena
              @parametro = 'dddd:eeee',
              @parametroid = 1,
              @nomcampo = N'dirMac';
    /* resultado */
         SELECT *
         FROM escena;

    Esto puede ayudarte en tu solución

    Un saludo

    sábado, 7 de julio de 2018 6:33