Código
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Diagnostics; namespace RegistrarOCspp2 { public partial class RegistrarStock : Form { public RegistrarStock() { InitializeComponent(); dgv1.AllowUserToAddRows = false; } int cant = 0; private SqlConnection conexion; private SqlCommand consulta; private void studioButton2_Click(object sender, EventArgs e) { this.Close(); } private void RegistrarStock_Load(object sender, EventArgs e) { // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet27.ubicacion' Puede moverla o quitarla según sea necesario. this.ubicacionTableAdapter.Fill(this.proyectoSaludDataSet27.ubicacion); // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet26.jerarquia' Puede moverla o quitarla según sea necesario. this.jerarquiaTableAdapter.Fill(this.proyectoSaludDataSet26.jerarquia); AutoValidate = AutoValidate.Disable; } private void CrearColumnaLote() { DataGridViewTextBoxColumn txtColumna = txtColumna.Name = "Lote"; txtColumna.HeaderText = "LOTE"; dgv1.Columns.Insert(3, txtColumna); dgv1.Columns[3].Width = 150; dgv1.Columns[3].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; } private void CrearColumnaVto() { DataGridViewTextBoxColumn txtColumna = txtColumna.Name = "Vto"; txtColumna.HeaderText = "VENCIMIENTO"; dgv1.Columns.Insert(4, txtColumna); dgv1.Columns[4].Width = 20; dgv1.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; } private void CrearColumnaStock() { DataGridViewTextBoxColumn txtColumna = txtColumna.Name = "Stock"; txtColumna.HeaderText = "CANTIDAD A INGRESAR"; dgv1.Columns.Insert(5, txtColumna); dgv1.Columns[5].Width = 211; dgv1.Columns[5].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; } private void CrearColumnaFaltante() { DataGridViewTextBoxColumn txtColumna = txtColumna.Name = "Faltante"; txtColumna.HeaderText = "FALTANTE"; dgv1.Columns.Insert(6, txtColumna); dgv1.Columns[6].Width = 211; dgv1.Columns[6].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; } private void CrearColumnaUbicacion() { DataGridViewTextBoxColumn comboColumna = comboColumna.Name = "Ubicacion"; comboColumna.HeaderText = "UBICACION"; dgv1.Columns.Insert(7, comboColumna); dgv1.Columns[7].Width = 30; dgv1.Columns[7].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; } private void txtNumero_KeyDown_1(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (txtNumero.Text == "") { DialogResult ds = MessageBox.Show("DEBE INGRESAR UN NRO DE ORDEN", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.Text = ds.ToString(); } else if (txtNumero.Text != "") { conexion = new SqlConnection("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True"); conexion.Open(); SqlCommand consulta = new SqlCommand("select count (*) from DetalleOrdenCompra where nro_orden=@nro", conexion); consulta.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text)); int count = Convert.ToInt32(consulta.ExecuteScalar()); if (count > 0) { DialogResult result = MessageBox.Show(this, "DESEA REGISTRAR LOS DATOS?", "ORDEN DE COMPRA ENCONTRADA", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); //MessageBox.Show(consulta2.ToString()); this.Text = result.ToString(); if (result == DialogResult.OK) { //CARGAR LOS DATAGRIDVIEW SqlCommand consulta2 = new SqlCommand("SELECT dbo.medicamentos1.nombre_medicamento, dbo.medicamentos1.jerarquia, dbo.DetalleOrdenCompra.cantidad FROM dbo.DetalleOrdenCompra INNER JOIN dbo.medicamentos1 ON dbo.DetalleOrdenCompra.codigoMedicamento = dbo.medicamentos1.id_medicamento WHERE nro_orden=@nro ", conexion); consulta2.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text)); da.Fill(dt); dgv1.DataSource = dt; dgv1.Columns[0].ReadOnly = true; dgv1.Columns[1].ReadOnly = true; dgv1.Columns[2].ReadOnly = true; int rows = dt.Rows.Count; dgv1.Columns[0].HeaderText = "MEDICAMENTO"; dgv1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[0].Width = 211; dgv1.Columns[1].HeaderText = "JERARQUIA"; dgv1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[1].Width = 180; dgv1.Columns[2].HeaderText = "CANTIDAD"; dgv1.Columns[2].Name = "Cantidad"; dgv1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; dgv1.Columns[2].Width = 80; CrearColumnaLote(); CrearColumnaVto(); CrearColumnaStock(); CrearColumnaFaltante(); CrearColumnaUbicacion(); dgv1.Columns[6].ReadOnly = true; txtNumero.Enabled = false; dgv1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[3].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[4].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[5].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[6].SortMode = DataGridViewColumnSortMode.NotSortable; dgv1.Columns[7].SortMode = DataGridViewColumnSortMode.NotSortable; btnVerificar.Enabled = true; } else if (result == DialogResult.Cancel) { txtNumero.Text = ""; } this.Text = result.ToString(); } else { DialogResult ds = MessageBox.Show(this, "LA ORDEN INGRESADA NO SE ENCUENTRA REGISTRADA", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.Text = ds.ToString(); } conexion.Close(); } } } private void txtNumero_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsDigit(e.KeyChar)) e.Handled = false; else if (char.IsControl(e.KeyChar)) e.Handled = false; else if (char.IsSeparator(e.KeyChar)) e.Handled = false; else e.Handled = true; } private void validar_Keypress(object sender, System.Windows.Forms.KeyPressEventArgs e) { int columna = dgv1.CurrentCell.ColumnIndex; if (columna == 5) { TextBox txt = (TextBox)sender; if (char.IsDigit(e.KeyChar)) e.Handled = false; else if (char.IsControl(e.KeyChar)) e.Handled = false; else if (char.IsSeparator(e.KeyChar)) e.Handled = false; else e.Handled = true; } } private void dgv1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { TextBox validar = (TextBox)e.Control; validar.KeyPress += validar_Keypress; } private void btnVer_Click(object sender, EventArgs e) { u.Show(); } private void button4_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show(this, "SEGURO QUE DESEA SALIR?", "SALIR", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); this.Text = result.ToString(); if (result == DialogResult.OK) { this.Close(); } else if (result == DialogResult.Cancel) { } } private Boolean EsFecha(String fecha) { try { DateTime.Parse(fecha); return true; } catch { return false; } } private void button2_Click(object sender, EventArgs e) { try { conexion.Open(); foreach (DataGridViewRow row in dgv1.Rows) { SqlCommand alta1 = new SqlCommand("insert into Stock values(@codigo,@medicamento,@cantidad,@lote,@vto)", conexion); alta1.Parameters.AddWithValue("@codigo", row.Cells["Column1"].Value); } } catch { } finally { conexion.Close(); } } private bool Existe() { foreach (IGrouping<object, DataGridViewRow> grupo in dgv1.Rows.Cast<DataGridViewRow>().GroupBy(dr => dr.Cells["Ubicacion"].Value).Where(g => g.Count() > 1)) { foreach (DataGridViewRow fila in grupo) { fila.DefaultCellStyle.ForeColor = Color.Red; return true; } } return false; } private void dgv1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { dgv1.Rows[e.RowIndex].ErrorText = String.Empty; DataGridViewRow row = (DataGridViewRow)dgv1.Rows[e.RowIndex]; int cantidad = Convert.ToInt32(row.Cells["Cantidad"].Value); int cantidad2 = Convert.ToInt32(row.Cells["Stock"].Value); if (cantidad2 > cantidad) { MessageBox.Show("LA CANTIDAD A INGRESAR SUPERA LA CANTIDAD DE LA ORDEN DE COMPRA", "ATENCION", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); row.Cells["Stock"].Value = ""; row.Cells["Faltante"].Value = ""; } else { row.Cells["Faltante"].Value = cantidad - cantidad2; } DataGridViewRow row2 = (DataGridViewRow)dgv1.Rows[e.RowIndex]; string ubicacion=Convert.ToString(row2.Cells["Ubicacion"].Value); string jerarquia = Convert.ToString(row2.Cells[1].Value); conexion.Open(); if (ubicacion != "") { SqlCommand consulta = new SqlCommand("select count (*) from Ubicaciones where codigo=@codigo and jerarquia=@jerarquia ", conexion); consulta.Parameters.AddWithValue("@codigo", ubicacion); consulta.Parameters.AddWithValue("@jerarquia", jerarquia); int count = Convert.ToInt32(consulta.ExecuteScalar()); if (count > 0) { } else { MessageBox.Show("NO EXISTE LA UBICACION INGRESADA CONSULTE LAS UBICACIONES DISPONIBLES PARA ESA JERARQUIA CON EL BOTON 'UBICACIONES VACIAS' ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information); row2.Cells["Ubicacion"].Value = ""; } } conexion.Close(); } private void dgv1_CellValidating_1(object sender, DataGridViewCellValidatingEventArgs e) { if (!dgv1.Rows[e.RowIndex].IsNewRow) { if (e.ColumnIndex == 4) { if (!this.EsFecha(e.FormattedValue.ToString())) { dgv1.Rows[e.RowIndex].ErrorText = "EL DATO INTRODUCIDO NO ES UNA FECHA"; e.Cancel = true; } } } } private void RegistrarStock_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel=false; } private void button1_Click_1(object sender, EventArgs e) { int cant = 0; if (Existe()) MessageBox.Show("INGRESO LA UBICACION MAS DE UNA VEZ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning); else { MessageBox.Show("NO SE ENCONTRARON UBICACIONES REPETIDAS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); dgv1.DefaultCellStyle.ForeColor = Color.Black; } bool incompleto = (from row in dgv1.Rows.Cast<DataGridViewRow>() from cell in row.Cells.Cast<DataGridViewCell>() where string.IsNullOrEmpty(cell.Value.ToString()) select row).Any(); if (incompleto) { MessageBox.Show("FALTAN COMPLETAR DATOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show("DATOS COMPLETOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning); cant++; } if (cant != 0) btnGuardar.Enabled = true; } } }