예제 #1
0
        private void btnBorrar_Click(object sender, EventArgs e)
        {
            // Si tenemos registros en la tabla y...
            // el usuario me confirma que realmente quiere borrar el registro.
            if ((dataGridView.RowCount > 0) &&
                (MessageBox.Show("¿Realmente quiere borrar el producto seleccionado?",
                                 "Confirmación",
                                 MessageBoxButtons.YesNo,
                                 MessageBoxIcon.Question) == DialogResult.Yes))
            {
                // Creamos una instancia de la clase CProductosBD.
                CProductosBD productosBD = new CProductosBD();

                // Obtenemos la clave principal del producto a borrar.
                productosBD.Producto_id = Convert.ToInt32(dataGridView.CurrentRow.Cells[0].Value);

                // Si el producto se borra correctamente.
                if (productosBD.Borrar())
                {
                    // Obtenemos la fila actual.
                    int rowIndex = dataGridView.CurrentCell.RowIndex;

                    // Recargamos y vamos a la fila actual, que corresponderá al siguiente producto.
                    Recargar(rowIndex);
                }
                else
                {
                    // Sino se ha podido borrar, mensaje de error.
                    MessageBox.Show("Al borrar el producto.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
예제 #2
0
        private void Recargar(int rowIndex = 0)
        {
            // Instanciamos la clase CProductosBD.
            CProductosBD productosBD = new CProductosBD();

            // Recargamos el DataGridView asociando el DataSource con los datos devueltos.
            dataGridView.DataSource = productosBD.Seleccionar();

            // Si tenemos datos...
            if (dataGridView.RowCount > 0)
            {
                // Comprobamos que la fila que nos indican no es superior a la cantidad de filas que tenemos.
                // Si es así, nos posicionamos en la última fila.
                if (rowIndex >= dataGridView.RowCount)
                {
                    rowIndex = dataGridView.RowCount - 1;
                }

                // Si nos indican una fila negativa, nos posicionamos en la primera.
                // Si nos indican una fila negativa, nos posicionamos en la primera.
                if (rowIndex < 0)
                {
                    rowIndex = 0;
                }

                // Nos posicionamos en la fila indicada.
                dataGridView.CurrentCell = dataGridView[1, rowIndex];
            }
        }
예제 #3
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            // Verificamos que todo es correcto antes de proseguir.
            if (!Correcto())
            {
                return;
            }

            // Por defecto, indicamos que se pulsa el botón OK.
            DialogResult = DialogResult.OK;

            // Instanciamos la clase CProductodBD.
            CProductosBD productosBD = new CProductosBD();

            // Le pasamos a cada una de las propiedades los valores correspondientes.
            productosBD.Producto     = txtProducto.Text;
            productosBD.Categoria_id = (int)cbCategorias.SelectedValue;
            productosBD.Marca_id     = (int)cbMarcas.SelectedValue;
            productosBD.Precio       = Convert.ToDouble(txtPrecio.Value);
            productosBD.Codigo       = Convert.ToInt32(txtCodigo.Value);

            // Si estamos insertando...
            if (Producto_id == 0)
            {
                // Insertamos y verificamos que todo ha ido bien.
                if (productosBD.Insertar())
                {
                    Producto_id = productosBD.Producto_id;
                }
                else
                {
                    MessageBox.Show("Al insertar el producto.\n" + productosBD.Error, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    // Si no se ha podido insertar, devolvemos Cancel.
                    DialogResult = DialogResult.Cancel;
                }
            }
            else
            {
                // y sino, estamos modificando.

                // Indicamos el producto a modificar.
                productosBD.Producto_id = Producto_id;

                // Verificamos que si ha habido un error.
                if (!productosBD.Editar())
                {
                    MessageBox.Show("Al modificar el producto.\n" + productosBD.Error, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    // Si no se ha podido modificar, devolvemos Cancel.
                    DialogResult = DialogResult.Cancel;
                }
            }
        }
예제 #4
0
        private void FProductosModificar_Load(object sender, EventArgs e)
        {
            // Instanciamos las clases CCategoriasBD y CMarcasBD.
            CCategoriasBD categoriasBD = new CCategoriasBD();
            CMarcasBD     marcasBD     = new CMarcasBD();

            // Obtenemos todos los registros de la tabla.
            cbCategorias.DataSource = categoriasBD.Seleccionar();

            // Mostramos el valor del campo categoría.
            cbCategorias.DisplayMember = "categoria";

            // Indicamos que le valor seleccionado es la clave primaria.
            cbCategorias.ValueMember = "categoria_id";

            // Para las marcas hacemos lo mismo que para las categorías.
            cbMarcas.DataSource    = marcasBD.Seleccionar();
            cbMarcas.DisplayMember = "marca";
            cbMarcas.ValueMember   = "marca_id";

            // Si me indican un producto en concreto, es que queremos modificarlo.
            if (Producto_id != 0)
            {
                // Instanciamos la clase CProductosBD.
                CProductosBD productosBD = new CProductosBD();

                // Buscamos el producto.
                productosBD.Seleccionar(Producto_id);

                // Mostramos la clave primaria.
                txtId.Text = Convert.ToString(productosBD.Producto_id);

                // El código del producto.
                txtCodigo.Value = productosBD.Codigo;

                // El nombre del producto.
                txtProducto.Text = productosBD.Producto;

                // Buscamos en el ComboBox el índide de la categoría seleccionada.
                cbCategorias.SelectedIndex = cbCategorias.FindStringExact(productosBD.Categoria);
                // cbCategorias.SelectedValue = productosBD.Categoria_id;

                // Otra forma de asignar el índice.
                // cbMarcas.SelectedIndex = cbMarcas.FindStringExact(productosBD.Marca);
                cbMarcas.SelectedValue = productosBD.Marca_id;

                // Y finalmente, el precio.
                txtPrecio.Value = Convert.ToDecimal(productosBD.Precio);

                // Indicamos que estamos modificando.
                Text = "Productos :: Modificar";
            }
        }
예제 #5
0
        private const float milimetro = 2.83465f; // 1 milímetro son 2.83465 puntos de pantalla.

        public void Imprimir()
        {
            Document document = new Document();                // Documento PDF.

            document.SetPageSize(iTextSharp.text.PageSize.A4); // Tamaño de la hoja A4.
            document.SetMargins(10f * milimetro,               // Margen derecho 10 mm ó 1 cm.
                                10f * milimetro,               // Margen izquierdo 10 mm ó 1 cm.
                                30f * milimetro,               // Margen superior 30 mm ó 3 cm.
                                10f * milimetro);              // Margen inferior 10 mm ó cm.

            try
            {
                // Guardaremos el contenido en un fichero "test.pdf"
                PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream("test.pdf", FileMode.Create));

                pdfWriter.PageEvent = new HeaderFooter();  // Indicamos nuestro pie de página personalizado.
            }
            catch (Exception ex)
            {
                // En caso de nos poder guardar en "test.pdf" lanzamos excepción.
                throw new Exception("Al guardar el fichero \"test.pdf\".\n\n" + ex.Message);
            }

            document.Open(); // Abrimos el documentos.

            try
            {
                CProductosBD productos = new CProductosBD();            // Creamos el objeto productos.

                DataRow[] rows = productos.Seleccionar().Select();      // Seleccionamos todos los productos.

                PdfPTable tProductos    = new PdfPTable(5);             // Tabla para mostrar los productos.
                PdfPCell  celdaCabecera = new PdfPCell();               // Celda para la cabecera.
                PdfPCell  celdaDerecha  = new PdfPCell();               // Celda para alineación derecha.

                tProductos.WidthPercentage = 100f;                      // La tabla tendrá una anchura del 100%

                celdaDerecha.HorizontalAlignment = Element.ALIGN_RIGHT; // La celda derecha pues eso a la derecha.
                celdaDerecha.FixedHeight         = 7f * milimetro;

                celdaCabecera.HorizontalAlignment = Element.ALIGN_CENTER;           // Las celdas de la cabecera se alinean al centro,
                celdaCabecera.BackgroundColor     = new BaseColor(Color.LightGray); // con el fondo en gris claro
                celdaCabecera.FixedHeight         = 7f * milimetro;                 // y una altura de celda de 7 mm.

                celdaCabecera.Phrase = new Phrase("Código");                        // Título de la celda código.
                tProductos.AddCell(celdaCabecera);                                  // Añadimos la celda.

                celdaCabecera.Phrase = new Phrase("Producto");
                tProductos.AddCell(celdaCabecera);

                celdaCabecera.Phrase = new Phrase("Categoría");
                tProductos.AddCell(celdaCabecera);

                celdaCabecera.Phrase = new Phrase("Marca");
                tProductos.AddCell(celdaCabecera);

                celdaCabecera.Phrase = new Phrase("Precio");
                tProductos.AddCell(celdaCabecera);

                tProductos.HeaderRows = 1; // La primera fila, la cabecera, se repetirá en cada nueva página.

                // Para cada una de las filas de nuestra consulta...
                for (int i = 0; i < rows.Count(); i++)
                {
                    celdaDerecha.Phrase = new Phrase(rows[i]["Código"].ToString());        // Código.
                    tProductos.AddCell(celdaDerecha);                                      // Observar que no lo insertamos directamente porque lo queremos alinear a la derecha.

                    tProductos.AddCell(rows[i]["Producto"].ToString());                    // Producto.
                    tProductos.AddCell(rows[i]["Categoría"].ToString());                   // Categoría.
                    tProductos.AddCell(rows[i]["Marca"].ToString());                       // Marca.

                    celdaDerecha.Phrase = new Phrase(rows[i]["Precio"].ToString() + " €"); // Precio.
                    tProductos.AddCell(celdaDerecha);
                }

                document.Add(tProductos);  // Añadimos la tabla al documento.
            }
            catch (Exception ex)
            {
                // En caso de error lanzamos la excepción con el error que se ha producido.
                throw new System.Exception("Al generar el archivo \"test.pdf\".\n\n" + ex.Message);
            }
            finally
            {
                document.Close(); // y lo cerramos.
            }
        }