none
InsertCommand SqlDataAdapter no funciona Con DatagridView RRS feed

Respuestas

Todas las respuestas

  • He realizado algunas pruebas. La edición de las filas se llevan a cabo de manera correcta pero la inserción no hace nada. A continuación muestro la forma de insertar la fila en la grilla:

                            DataRow dR = this.dataSet.Tables["EmeDetalle"].NewRow();
                            dR[2] = Gasto_COD;
                            dR[3] = TipoGasto_ID;
                            dR[4] = Gasto;
                            dR[5] = descripcionGasto;
                            dR[6] = precioArs1;
                            this.dataSet.Tables["EmeDetalle"].Rows.Add(dR);

                            this.dgvEmergencia_Detalle2.Refresh(); aquí actualizo el Datagridview y me muestra la fila insertada de forma programática, ya que la grilla tiene un origen de datos asignado o datos enlazados.

    Cabe destacar que existe una columna en la grilla que hay que modificar en la fila insertada, y es la columna "Cantidad" para que pueda calcular el sub-total, el cual es otra columna de la grilla.

    A continuación muestro el código modificado para configurar el adaptador:

           private void SetDataAdapter()
            {
                #region Código Actual
                this.adapter = new SqlDataAdapter("select ED.EmeDetalle_Id AS ID_DETALLE, ED.EmeDetalle_MaestroId AS ID_EMERGENCIA, " +
                    "ED.Emedetalle_GastoId AS ID_GASTO, ED.EmeDetalle_TipoGastoId AS ID_TIPOGASTO, " +
                    "GA.Descripcion AS Gasto, TG.Descripcion As TipoGasto, ED.EmeDetalle_PU_Ars as Precio, " +
                    "ED.EmeDetalle_Cantidad as Cantidad, SUM((ED.EmeDetalle_PU_Ars*ED.EmeDetalle_Cantidad)) as SubTotal " +
                    "from dbo.tblEmergencias_Detalles  AS ED " +
                    "INNER JOIN  dbo.tblGastos_Ars AS GA ON ED.Emedetalle_GastoId=GA.ID_GASTO " +
                    "INNER JOIN dbo.tblGastos_Tipos AS TG ON ED.EmeDetalle_TipoGastoId=TG.ID_TipoGasto " +
                    "WHERE ED.EmeDetalle_MaestroId= " + this._idEmergencia + " group by ED.EmeDetalle_Id, " +
                    "ED.EmeDetalle_MaestroId, ED.Emedetalle_GastoId, ED.EmeDetalle_TipoGastoId, GA.Descripcion, " +
                    "TG.Descripcion, ED.EmeDetalle_PU_Ars, ED.EmeDetalle_Cantidad", this.conn);

                //Insert
                //Command
                this.adapter.InsertCommand = new SqlCommand("INSERT INTO tblEmergencias_Detalles (EmeDetalle_MaestroId, EmeDetalle_TipoGastoId, Emedetalle_GastoId, " +
                        "EmeDetalle_PU_Ars, EmeDetalle_Cantidad) values (@paramMaestroId, @paramTipoGastoId, @paramGastoId, @paramPUArs, @paramCantidad)", this.conn);
                //Parameters
                //@paramMaestroId
                this.adapter.InsertCommand.Parameters.Add("@paramMaestroId", SqlDbType.Int);
                this.adapter.InsertCommand.Parameters["@paramMaestroId"].SourceVersion = DataRowVersion.Current;
                this.adapter.InsertCommand.Parameters["@paramMaestroId"].SourceColumn = "ID_EMERGENCIA";
               
                //@paramTipoGastoId
                this.adapter.InsertCommand.Parameters.Add("@paramTipoGastoId", SqlDbType.Int);
                this.adapter.InsertCommand.Parameters["@paramTipoGastoId"].SourceVersion = DataRowVersion.Current;
                this.adapter.InsertCommand.Parameters["@paramTipoGastoId"].SourceColumn = "ID_TIPOGASTO";

                //@paramGastoId
                this.adapter.InsertCommand.Parameters.Add("@paramGastoId", SqlDbType.Int);
                this.adapter.InsertCommand.Parameters["@paramGastoId"].SourceVersion = DataRowVersion.Current;
                this.adapter.InsertCommand.Parameters["@paramGastoId"].SourceColumn = "ID_GASTO";

                //@paramPUArs
                this.adapter.InsertCommand.Parameters.Add("@paramPUArs", SqlDbType.Decimal);
                this.adapter.InsertCommand.Parameters["@paramPUArs"].SourceVersion = DataRowVersion.Current;
                this.adapter.InsertCommand.Parameters["@paramPUArs"].SourceColumn = "Precio";

                //@paramCantidad
                this.adapter.InsertCommand.Parameters.Add("@paramCantidad", SqlDbType.Int);
                this.adapter.InsertCommand.Parameters["@paramCantidad"].SourceVersion = DataRowVersion.Current;
                this.adapter.InsertCommand.Parameters["@paramCantidad"].SourceColumn = "Cantidad";
               
                //Update
                //Command
                this.adapter.UpdateCommand = new SqlCommand("UPDATE tblEmergencias_Detalles set EmeDetalle_TipoGastoId=@paramTipoGastoId, " +
                    "Emedetalle_GastoId=@paramGastoId, EmeDetalle_PU_Ars=@paramPUArs, EmeDetalle_Cantidad=@paramCantidad " +
                    "WHERE EmeDetalle_Id=@paramId", this.conn);
                //Parameters
                this.adapter.UpdateCommand.Parameters.Add("@paramId", SqlDbType.Int);
                this.adapter.UpdateCommand.Parameters["@paramId"].SourceVersion = DataRowVersion.Current;
                this.adapter.UpdateCommand.Parameters["@paramId"].SourceColumn = "ID_DETALLE";

                this.adapter.UpdateCommand.Parameters.Add("@paramTipoGastoId", SqlDbType.Int);
                this.adapter.UpdateCommand.Parameters["@paramTipoGastoId"].SourceVersion = DataRowVersion.Current;
                this.adapter.UpdateCommand.Parameters["@paramTipoGastoId"].SourceColumn = "ID_TIPOGASTO";

                this.adapter.UpdateCommand.Parameters.Add("@paramGastoId", SqlDbType.Int);
                this.adapter.UpdateCommand.Parameters["@paramGastoId"].SourceVersion = DataRowVersion.Current;
                this.adapter.UpdateCommand.Parameters["@paramGastoId"].SourceColumn = "ID_GASTO";

                this.adapter.UpdateCommand.Parameters.Add("@paramPUArs", SqlDbType.Decimal);
                this.adapter.UpdateCommand.Parameters["@paramPUArs"].SourceVersion = DataRowVersion.Current;
                this.adapter.UpdateCommand.Parameters["@paramPUArs"].SourceColumn = "Precio";

                this.adapter.UpdateCommand.Parameters.Add("@paramCantidad", SqlDbType.Int);
                this.adapter.UpdateCommand.Parameters["@paramCantidad"].SourceVersion = DataRowVersion.Current;
                this.adapter.UpdateCommand.Parameters["@paramCantidad"].SourceColumn = "Cantidad";

                #endregion
    }

    El siguiente código es el que llena el dataset y enlaza los datos a la grilla:
    #region BindGrid
            private void BindGrid()
            {
                this.adapter.Fill(this.dataSet, "EmeDetalle");
                this.dgvEmergencia_Detalle2.DataSource = this.dataSet.Tables["EmeDetalle"];
            }
            #endregion

    Al cargar el form, ejecuto el SetAdapter y luego el BindGrid.

    A ver si pueden detectar el inconveniente. Creo que está en la forma de insertar la fila, he realizado muchas pruebas y nada. Les agradezco de antemano su valiosa ayuda!!!

    Saludos!!!


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 23 de enero de 2014 18:41
  • La solución a la pregunta se encuentra en el siguiente link:

    http://social.msdn.microsoft.com/Forums/es-ES/03c95f41-708e-4ce7-9f30-4185ad246c0a/agregar-filas-mediante-programacin-en-datagridview-bindeado-a-un-control-bindinsource?forum=vcses


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    • Marcado como respuesta Paoli_vb jueves, 23 de enero de 2014 19:17
    jueves, 23 de enero de 2014 19:17