private void btnGuardarCodigo_Click(object sender, EventArgs e) { string sql; //Validamos que el código postal sea válido bool isNumeric = int.TryParse(this.txtCodigoPostal.Text.Trim(), out int codigoPostal); if (isNumeric == false) { Mensajes.NoExito("Inserte un código postal válido"); return; } //Validamos que haya seleccionado un estado if (string.IsNullOrEmpty(this.cbEstado.Text)) { Mensajes.NoExito("Seleccione un estado"); return; } //Validamos que haya seleccionado o escrito una ciudad if (string.IsNullOrWhiteSpace(this.cbMunicipio.Text)) { Mensajes.NoExito("Seleccione o escriba una ciudad"); return; } //Validamos que tenga al menos 1 paquetería if (dgvPaqueterias.Rows.Count == 0) { Mensajes.NoExito("El código postal al menos debe de tener una paquetería"); return; } //Recorremos el datagridview para validar que no haya datos vacíos foreach (DataGridViewRow fila in dgvPaqueterias.Rows) { if (fila.Cells["Paqueteria"].Value == null) { Mensajes.NoExito("No puede haber datos vacíos"); return; } if (fila.Cells["Ocurre"].Value == null) { fila.Cells["Ocurre"].Value = false; } } string estado = this.cbEstado.Text; string municipio = this.cbMunicipio.Text.Trim().ToUpper(); DialogResult respuesta = DialogResult.None; //Validamos que no haya sido registrado ya el código postal sql = string.Format("SELECT Id FROM Codigos_postales WHERE CodigoPostal={0};", codigoPostal); ds = Conexion.Ejecutar(sql); if (ds.Tables[0].Rows.Count > 0) { ds.Clear(); respuesta = Mensajes.Confirmar("¿Deseas actualizar los datos?"); if (respuesta == DialogResult.No) { return; } } sql = string.Format("SELECT Id FROM Ciudades WHERE Ciudad='{0}'", municipio); ds = Conexion.Ejecutar(sql); if (ds.Tables[0].Rows.Count == 0) { ds.Clear(); sql = string.Format("INSERT INTO Ciudades (Estado, Ciudad) VALUES('{0}', '{1}')", estado, municipio); ds = Conexion.Ejecutar(sql); } ds.Clear(); if (respuesta == DialogResult.Yes) { //Actualizamos el estado y municipio sql = string.Format("UPDATE Codigos_postales SET Estado='{0}', Municipio='{1}' WHERE CodigoPostal={2};", estado, municipio, codigoPostal); ds = Conexion.Ejecutar(sql); ds.Clear(); //Borramos la información primero sql = string.Format("DELETE FROM Paqueterias_codigos WHERE CodigoPostal={0}", codigoPostal); ds = Conexion.Ejecutar(sql); ds.Clear(); //Recorremos el datagridview para actualizar los datos de los métodos de envío foreach (DataGridViewRow fila in dgvPaqueterias.Rows) { string paqueteria = fila.Cells["Paqueteria"].Value.ToString(); bool ocurre = bool.Parse(fila.Cells["Ocurre"].Value.ToString()); //Insertamos las paqueterias que tiene ese codigo postal sql = string.Format("INSERT INTO Paqueterias_codigos (CodigoPostal, Paqueteria, Ocurre) VALUES ({0}, '{1}', {2});", codigoPostal, paqueteria, ocurre); ds = Conexion.Ejecutar(sql); ds.Clear(); } Mensajes.Exito("El código postal se ha actualizado correctamente"); this.txtCodigoPostal.Clear(); this.LimpiarFormulario(); return; //Salimos del proceso } //Insertamos los datos del codigo postal sql = string.Format("INSERT INTO Codigos_postales (CodigoPostal, Estado, Municipio) VALUES({0}, '{1}', '{2}')", codigoPostal, estado, municipio); ds = Conexion.Ejecutar(sql); ds.Clear(); //Recorremos el datagridview para insertar la información en la DB foreach (DataGridViewRow fila in dgvPaqueterias.Rows) { string paqueteria = fila.Cells["Paqueteria"].Value.ToString(); bool ocurre = bool.Parse(fila.Cells["Ocurre"].Value.ToString()); //Insertamos las paqueterias que tiene ese codigo postal sql = string.Format("INSERT INTO Paqueterias_codigos (CodigoPostal, Paqueteria, Ocurre) VALUES ({0}, '{1}', {2});", codigoPostal, paqueteria, ocurre); ds = Conexion.Ejecutar(sql); ds.Clear(); } Mensajes.Exito("El código postal se ha registrado correctamente"); this.txtCodigoPostal.Clear(); this.LimpiarFormulario(); }