none
Campo autoincrementable Asp.net C# RRS feed

  • Pregunta

  • Saludos amigos

    muchacHos buenas tardes a todos, necesito hacerle una pregunta hacerca de un campo autoincrementable en sql y usando Asp.net c#

    Escuchen:

    Tengo una tabla llamada " CompraVenta " en sql server tengo un campo que es autoincrementable en 1 llamado " Cov_Factura".

    la estructura de mi tabla es la siguiente:

    Cov_Factura          int        autoincrementable en 1

    Cov_Fecha            date

    Cov_Caja              Varchar(50)

    Cov_Cajero           varchar(50)

    Cov_Comentario   varchar(50)

    Cov_Cantidad       Float

    Cov_Moneda         varchar(50)

    Cov_Cliente          varchar(50)

    Cov_Descuento     float

    CoV_SubTotal       float

    Cov_Precio           float

    entonces que pasa yo inserto los datos a la tabla muy bien, pero yo inserto algunos datos desde textbox y otros desde un gridview, 

    los datos que inserto desde textbox son: 

    Cov_Factura: que es autoincrementable en 1

    Cov_Fecha, Cov_Caja, Cov_Cajero, Cov_comentario y Cov_Cliente

    los demaas campos se insertan desde el gridview.

    Problema:

    Cuando inserto una sola linea del gridview el numero autoincrementable esta perfecto por ejemplo si voy por la factura numero 3 se inserta la 3,

    el numero siguiente seria 4

    pero si inserto dos lineas del gridview me pone 4 y 5 diciendome que la proxima factura sera la 6.

    ese es mi problema porque si son dos o mas lineas juntas debiera ponerle factura 5 a las dos lineas y bo 5 y 6 para la proxima que insetaria seria 6 

    entonces pregunto

    como puedo hacer que la insertar varias lineas del gridview me le ponga el mismo numero de factura a cada linea hasta que sea un nuevo registro.

    dejo el codigo de insertar haber si me pueden ayudar para ver si se puede hacer lo que pido o que me den su opinion como debe hacerlo por favor.

     protected void ImageButtonAceptar_Click(object sender, ImageClickEventArgs e)
            {

                SqlConnection con2 = new SqlConnection();
                con2.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
                con2.Open();
                SqlCommand cmd27 = new SqlCommand();
                cmd27.CommandText = "Select * from [CompraVenta] where Cov_Factura=@Cov_Factura And Cov_Fecha=@Cov_Fecha And Cov_Caja=@Cov_Caja";
                cmd27.Parameters.AddWithValue("@Cov_Factura", TxtFactura.Text);
                cmd27.Parameters.AddWithValue("@Cov_Fecha", TxtFecha.Text);
                cmd27.Parameters.AddWithValue("@Cov_Caja", TxtCaja.Text);
                cmd27.Connection = con2;
                SqlDataReader rd = cmd27.ExecuteReader();

                if (rd.HasRows)
                {
                    ImgBarras.ImageUrl = "~/Imagenes/BarraMarron.png";
                    LblMensajes.Text = "Registro Existe";
                    TmrOcultarMensaje.Enabled = true;

                }
                else
                {

                    con2.Close();
                    con2.Open();

                    int gvHasRows = GvwCompraVenta.Rows.Count;

                    if (gvHasRows > 0)
                    {

                        string query11 = @"insert CompraVenta (Cov_Fecha, Cov_Caja, Cov_Cajero, Cov_Comentario, Cov_Cliente, Cov_Moneda, Cov_Cantidad, Cov_Precio, Cov_Descuento, Cov_SubTotal, Cov_Transaccion, Cov_Factura1)values(getdate(), @Caja, @Cajero, @Comentario, @Cliente, @Moneda, @Cantidad, @Precio, @Descuento, @SubTotal, @Transaccion, @Factura1)";

                        SqlCommand query = new SqlCommand(query11, con2);

                        foreach (GridViewRow GVRow in GvwCompraVenta.Rows)
                        {

                            
                                string Cov_Moneda = GVRow.Cells[1].Text;
                                string Cov_Cantidad = GVRow.Cells[2].Text;
                                string Cov_Precio = GVRow.Cells[3].Text;
                                string Cov_Descuento = GVRow.Cells[4].Text;
                                string Cov_SubTotal = GVRow.Cells[5].Text;
                                string Cov_Transaccion = GVRow.Cells[6].Text;

                                query.Parameters.Clear();
                                query.Parameters.AddWithValue("@Caja", TxtCaja.Text);
                                query.Parameters.AddWithValue("@Cajero", TxtCajero.Text);
                                query.Parameters.AddWithValue("@Comentario", TxtComentario.Text);
                                query.Parameters.AddWithValue("@Cliente", DdlCliente.Text);
                                query.Parameters.AddWithValue("@Factura1", TxtFactura.Text);

                                query.Parameters.AddWithValue("@Moneda", Cov_Moneda.ToString());
                                query.Parameters.AddWithValue("@Cantidad", Cov_Cantidad.ToString());
                                query.Parameters.AddWithValue("@Precio", Cov_Precio.ToString());
                                query.Parameters.AddWithValue("@Descuento", Cov_Descuento.ToString());
                                query.Parameters.AddWithValue("@SubTotal", Cov_SubTotal.ToString());
                                query.Parameters.AddWithValue("@Transaccion", Cov_Transaccion.ToString());
                                query.ExecuteNonQuery();

                                ImgBarras.ImageUrl = "~/Imagenes/BarraVerde.png";
                                LblMensajes.Text = "Registro Guardado Exitosamente";
     
                                Desabilitar();

                        }

                    }
                    else
                    {

                        ImgBarras.ImageUrl = "~/Imagenes/BarraRoja.png";
                        LblMensajes.Text = "Debes introducir datos en la grilla para poder grabar los datos";
                        TmrOcultarMensaje.Enabled = true;

                    }

                    con2.Close();

                }

            }

    jueves, 16 de noviembre de 2017 21:26

Respuestas

  • Buenas tardes, tu error esta en la lógica del diseño de la tabla, en efecto si pones el campo autoincrementable, cada registro que agregues se incrementara +1, y si la inserción la haces de un gridview o de textbox no importa seran registros agregados a tu tablas y por cada registro se incrementara mas uno, (espero darme a entender), 

    si lo que quieres es controlar algún detalle de tus datos te sugieros que crees dos tablas una donde se agregue la información general y la otra la información detalle así mantendrás la integridad de tus datos.

    Saludos,



    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Heytel Martinez


    • Propuesto como respuesta HRMA jueves, 16 de noviembre de 2017 22:06
    • Editado HRMA jueves, 16 de noviembre de 2017 22:10
    • Marcado como respuesta agustin173 viernes, 17 de noviembre de 2017 10:24
    jueves, 16 de noviembre de 2017 22:06

Todas las respuestas

  • Buenas tardes, tu error esta en la lógica del diseño de la tabla, en efecto si pones el campo autoincrementable, cada registro que agregues se incrementara +1, y si la inserción la haces de un gridview o de textbox no importa seran registros agregados a tu tablas y por cada registro se incrementara mas uno, (espero darme a entender), 

    si lo que quieres es controlar algún detalle de tus datos te sugieros que crees dos tablas una donde se agregue la información general y la otra la información detalle así mantendrás la integridad de tus datos.

    Saludos,



    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Heytel Martinez


    • Propuesto como respuesta HRMA jueves, 16 de noviembre de 2017 22:06
    • Editado HRMA jueves, 16 de noviembre de 2017 22:10
    • Marcado como respuesta agustin173 viernes, 17 de noviembre de 2017 10:24
    jueves, 16 de noviembre de 2017 22:06
  • Muchas gracias HRMA por tu respuesta buscare en la web como hacer eso que me dices

    gracias.

    viernes, 17 de noviembre de 2017 10:25