Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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;
        }