private void aggcol_Click(object sender, RoutedEventArgs e) { string mensaje = ""; string NombreTabla = txtbNombreTabla.Text; Regex _regex = new Regex("^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-7][0-9][0-9][0-9]|8000)$"); // Comprueba que el nomnbre de la columna no sea una palabra reservada de SQL bool flag = ComprobarNombreColumna(txtCNombre.Text); int pk = 0; // Validando nombre del maestro avanzado if (!(Regex.IsMatch(NombreTabla, @"^[A-Z][0-9a-zA-Z_]+$"))) { mensaje = "El nombre de la tabla:" + " " + txtbNombreTabla.Text + " " + "no es válido \n"; } else { if (txtbNombreTabla.Text.Length < 2 || txtbNombreTabla.Text.Length > 25) { mensaje = "El nombre de la tabla debe contener dos caracteres como mínimo y venticinco como máximo\n"; } else { if (flag == false) { mensaje = "Nombre de columna no válido \n"; } else { if (txtCNombre.Text.Length < 2 || txtCNombre.Text.Length > 25) { mensaje = "El nombre de la columna debe contener dos caracteres como mínimo y venticinco como máximo\n"; } else { if (!(Regex.IsMatch(txtCNombre.Text, @"^[a-zA-Z][0-9a-zA-Z_]+$"))) { mensaje = "El nombre de la columna:" + " " + txtCNombre.Text + " " + "no es válido \n"; } else { if (cbTD.Text == "") { mensaje = " Debe seleccionar un tipo de dato \n"; } else { if (cbTD.Text == "varchar" && txtTamanioR1.Text == "") { mensaje = "Debe especificar el tamaño del tipo de dato Varchar \n"; } else { if (!_regex.IsMatch(txtTamanioR1.Text) && cbTD.Text == "varchar") { mensaje = "El tamaño del tipo de dato Varchar debe ser mayor a 0 y menor a 8000 \n"; } } } } } } } } // La clave primaria no permite valores nulos if (chkPN.IsChecked.Value == true && chkPK.IsChecked.Value == true) { mensaje = "La clave primaria no puede permitir valores nulos \n"; } // Las claves primaria solo deben ser BigInt o Int if ((chkPK.IsChecked.Value == true) && !(cbTD.Text == "bigint" || cbTD.Text == "int")) { mensaje = "La clave primaria solo puede ser Int o BigInt \n"; } try { if (mensaje == "") { data obj = new data(); obj.NomColumn = txtCNombre.Text; obj.TypeData = cbTD.Text == "varchar" ? cbTD.Text + "(" + txtTamanioR1.Text + ")" : cbTD.Text; obj.PN = chkPN.IsChecked.Value; obj.PK = chkPK.IsChecked.Value; obj.Longitud = txtTamanioR1.Text; if (idCol > -1) { if (lista[idCol].PK) { lista[idCol].NomColumn = obj.NomColumn; lista[idCol].TypeData = obj.TypeData; lista[idCol].PN = obj.PN; lista[idCol].PK = obj.PK; lista[idCol].Longitud = obj.Longitud; idCol = -1; if (obj.TypeData == "varchar") { lbTamanioR1.Visibility = Visibility.Collapsed; lbTa.Visibility = Visibility.Collapsed; txtTamanioR1.Visibility = Visibility.Collapsed; } btnCancelar.IsEnabled = true; btnGuardar.IsEnabled = true; limpiarColAgg(); } else { foreach (var item in lista) { if (item.PK) { pk++; } } if (pk <= 1) { if (pk == 1 && obj.PK == true) { mensaje = "Solo se permite una clave primaria"; } else { lista[idCol].NomColumn = obj.NomColumn; lista[idCol].TypeData = obj.TypeData; lista[idCol].PN = obj.PN; lista[idCol].PK = obj.PK; lista[idCol].Longitud = obj.Longitud; idCol = -1; if (obj.TypeData == "varchar") { lbTamanioR1.Visibility = Visibility.Collapsed; lbTa.Visibility = Visibility.Collapsed; txtTamanioR1.Visibility = Visibility.Collapsed; } btnCancelar.IsEnabled = true; btnGuardar.IsEnabled = true; limpiarColAgg(); } } else { mensaje = "Solo se permite una clave primaria"; } } } else { foreach (var item in lista) { mensaje += txtCNombre.Text.ToLower() == item.NomColumn.ToLower() ? "El nombre de la columna ya existe \n" : ""; if (chkPK.IsChecked.Value && item.PK) { mensaje = "solo puede asignar una clave primaria \n"; break; } } if (mensaje == "") { lista.Add(obj); limpiarColAgg(); } } } if (mensaje != "") { MessageBox.Show(mensaje, "Alerta"); } } catch (Exception Ex) { Log.Error(Ex.Message); Console.WriteLine(Ex.Message); } }
public void cargarDatosMaestroA() { lista = new List <data>(); txtbNombreTabla.Text = nombreTabla; txtbNombreTabla.IsReadOnly = true; string pk = svc.buscarClavePrimaria(nombreTabla); foreach (var item in svc.buscarMAvanzado(nombreTabla)) { data objeto = new data(); objeto.NomColumn = item.Atributo; objeto.TypeData = item.TipoDeDato == "varchar" ? item.TipoDeDato + "(" + item.Longitud + ")" : item.TipoDeDato; objeto.Longitud = item.Longitud; if (item.TipoDeDato.Contains("varchar") && objeto.Longitud == "-1") { objeto.TypeData = "varchar(MAX)"; } if (item.TipoDeDato == "binary" && objeto.Longitud == "50") { objeto.TypeData = "binary(50)"; } if (item.TipoDeDato == "char" && objeto.Longitud == "10") { objeto.TypeData = "char(10)"; } if (item.TipoDeDato == "datetime2" && objeto.Longitud == "null") { objeto.TypeData = "datetime2(7)"; } if (item.TipoDeDato == "datetimeoffset" && objeto.Longitud == "null") { objeto.TypeData = "datetimeoffset(7)"; } if (item.TipoDeDato == "decimal" && objeto.Longitud == "null") { objeto.TypeData = "decimal(18, 0)"; } if (item.TipoDeDato == "nchar" && objeto.Longitud == "20") { objeto.TypeData = "nchar(10)"; } if (item.TipoDeDato == "numeric" && objeto.Longitud == "null") { objeto.TypeData = "numeric(18,0)"; } if (item.TipoDeDato == "nvarchar" && objeto.Longitud == "100") { objeto.TypeData = "nvarchar(50)"; } if (item.TipoDeDato == "nvarchar" && objeto.Longitud == "-1") { objeto.TypeData = "nvarchar(MAX)"; } if (item.TipoDeDato == "time" && objeto.Longitud == "null") { objeto.TypeData = "time(7)"; } if (item.TipoDeDato == "varbinary" && objeto.Longitud == "50") { objeto.TypeData = "varbinary(50)"; } if (item.TipoDeDato == "varbinary" && objeto.Longitud == "-1") { objeto.TypeData = "varbinary(MAX)"; } if (pk == item.Atributo) { objeto.PK = true; } if (item.pNulo == "YES") { objeto.PN = true; } lista.Add(objeto); } lvMAvanzadoMod.ItemsSource = lista; }