private void ComboForanes_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e) { if (e.Index == -1) { return; } if (e.NewValue == System.Windows.Forms.CheckState.Checked) { Objetos.CLLaveForanea fk; fk = this.Foraneas[e.Index]; FormAccion dlg = new FormAccion(Modo); dlg.Eliminar = fk.Eliminar; dlg.Comentarios = fk.Comentarios; System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id); Objetos.CCampoFK cfk = lista[0]; if (this.Modo == 1) { dlg.Tabla = cfk.hija; } else { dlg.Tabla = cfk.maestra; } dlg.Mensaje = fk.Mensage; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) { e.NewValue = System.Windows.Forms.CheckState.Unchecked; return; } fk.Eliminar = dlg.Eliminar; fk.Mensage = dlg.Mensaje; fk.Comentarios = dlg.Comentarios; } }
private void muestraCampos(List <Objetos.CCampoFK> lista) { DataSet ds = new DataSet(); DataTable dt = new DataTable("Tabla"); //Creando las columnas y agregando los items a la tabla DataColumn dccolumnaMaestra = new DataColumn("columnaMaestra"); DataColumn dccolumnahija = new DataColumn("columnahija"); //Asignando los campos ala tabla dt.Columns.Add(dccolumnaMaestra); dt.Columns.Add(dccolumnahija); //agregarndo la tabla al data set ds.Tables.Add(dt); //llenando la tabla con datos int i, n; n = lista.Count; for (i = 0; i < n; i++) { Objetos.CCampoFK dato = (Objetos.CCampoFK)lista[i]; DataRow drRow = dt.NewRow(); drRow["columnaMaestra"] = dato.columnaMaestra; drRow["columnahija"] = dato.columnahija; dt.Rows.Add(drRow); } dataGrid1.DataSource = ds.Tables[0]; DataGridTableStyle ts = new DataGridTableStyle(); ts.AllowSorting = false; ts.MappingName = "Tabla"; //creando las columnas que se van a ver //------------------Columna padre---------------------------------------- DataGridColumnStyle columnaMaestra = new DataGridTextBoxColumn(); columnaMaestra.MappingName = "columnaMaestra"; columnaMaestra.HeaderText = "Columna padre"; columnaMaestra.Width = 100; columnaMaestra.ReadOnly = true; ts.GridColumnStyles.Add(columnaMaestra); //------------------Columna hija---------------------------------------- DataGridColumnStyle columnahija = new DataGridTextBoxColumn(); columnahija.MappingName = "columnahija"; columnahija.HeaderText = "Columna hija"; columnahija.Width = 100; columnahija.ReadOnly = true; ts.GridColumnStyles.Add(columnahija); //finalizando la creacion del data grid ts.MappingName = "Tabla"; dataGrid1.TableStyles.Clear(); dataGrid1.TableStyles.Add(ts); dataGrid1.AllowSorting = false; }
private void Actualizar() { System.Collections.Generic.List <Objetos.CParametro> campos; campos = DB.DameCamposTabla(this.NombreTabla); System.Collections.Generic.List <Objetos.CParametro> llaves = DB.DameLLavesPrimarias(this.NombreTabla); int i, n; //genero la lista de parametros System.Collections.Generic.List <Objetos.CParametro> camposParametro = new List <Visor_sql_2005.Objetos.CParametro>(); //lo primero que agrego, son los campos llave que requiero foreach (Objetos.CParametro p in llaves) { camposParametro.Add(p); } //ahora agrego los demas campos que me dio el usuario foreach (Objetos.CParametro p2 in Parametros) { //checo si esta en la lista de parametros bool esta = false; foreach (Objetos.CParametro p3 in camposParametro) { if (p3.nombre == p2.nombre) { esta = true; break; } } if (esta == false) { camposParametro.Add(p2); } } string s = "create procedure " + Nombre + "("; n = camposParametro.Count; //agrego los campos de la tabla (todos) for (i = 0; i < n; i++) { if (i > 0) { s = s + ","; } Objetos.CParametro Parametro = camposParametro[i]; s = s + "@" + Parametro.nombre + " " + Parametro.TipoSP; } s = s + ") as\r\n"; s = s + "begin\r\n"; s = s + "\t--procedimiento almacenado que modifica un registro a la tabla " + NombreTabla + " \r\n"; if (ComboForanes.CheckedItems.Count > 0) { //hay llaves foraneas, por lo que checo si hay que comprobar la integridad System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>(); n = ComboForanes.CheckedIndices.Count; for (i = 0; i < n; i++) { //creo la lista de llaves foraneas que hay que checar Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]); } n = Fks.Count; for (i = 0; i < n; i++) { Objetos.CLLaveForanea fk = Fks[i]; System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id); int j, k; k = lista.Count; Objetos.CCampoFK cfk = null; if (fk.Comentarios.Trim() != "") { s = s + "\t--" + fk.Comentarios + "\r\n"; } for (j = 0; j < k; j++) { cfk = lista[j]; if (j == 0) { s = s + "\tif not exists( select * from " + cfk.maestra + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija; } else { s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija; }; } s = s + ")\r\n"; s = s + "\tbegin\r\n"; s = s + "\t\t--no se ncontro el campo de la llave foranea \r\n"; s = s + "\t\t--por lo que genero una ecepcion \r\n"; s = s + "\t\tRAISERROR ('" + fk.Mensage + "', 16, 1) \r\n"; s = s + "\t\treturn \r\n"; s = s + "\tend\r\n"; } } s = s + "\t --agregar el codigo adicional aqui\r\n"; s = s + "\tupdate " + NombreTabla + " set "; n = Parametros.Count; for (i = 0; i < n; i++) { if (i > 0) { s = s + ","; } Objetos.CParametro Parametro = Parametros[i]; s = s + Parametro.nombre + "=@" + Parametro.nombre; } s = s + " where "; n = LLaves.Count; for (i = 0; i < n; i++) { if (i > 0) { s = s + " and "; } Objetos.CParametro llave = this.LLaves[i]; s = s + llave.nombre + "=@" + llave.nombre; } s = s + "\r\nend\r\n"; if (OnCodigo != null) { OnCodigo(textBox1.Text, s); } }
private void Eliminar() { string s = "create procedure " + this.Nombre + "("; //obtengo los parametros System.Collections.Generic.List <Objetos.CParametro> llaves = DB.DameLLavesPrimarias(this.NombreTabla); int i, n = llaves.Count; for (i = 0; i < n; i++) { Objetos.CParametro pa = llaves[i]; if (i > 0) { s = s + ","; } s = s + "@" + pa.nombre + " " + pa.TipoSP; } s = s + ") as\r\n"; s = s + "begin\r\n"; s = s + "\t--procedimiento almacenado que borra un registro de la tabla " + this.NombreTabla + " \r\n"; //------------------------------------------------------------------------ if (ComboForanes.CheckedItems.Count > 0) { //hay llaves foraneas, por lo que checo si hay que comprobar la integridad System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>(); n = ComboForanes.CheckedIndices.Count; for (i = 0; i < n; i++) { //creo la lista de llaves foraneas que hay que checar Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]); } n = Fks.Count; for (i = 0; i < n; i++) { Objetos.CLLaveForanea fk = Fks[i]; System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id); int j, k; k = lista.Count; Objetos.CCampoFK cfk = null; if (fk.Eliminar == false) { for (j = 0; j < k; j++) { cfk = lista[j]; if (j == 0) { if (fk.Comentarios.Trim() == "") { s = s + "\t--Verifico la existencia de registros en la tabla " + cfk.hija + "\r\n"; } else { s = s + "\t--" + fk.Comentarios + "\r\n"; } s = s + "\tif exists( select * from " + cfk.hija + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija; } else { s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija; }; } s = s + ")\r\n"; s = s + "\tbegin\r\n"; s = s + "\t\t--Genero un error \r\n"; s = s + "\t\tRAISERROR (\'" + fk.Mensage + "\', 16, 1) \r\n"; s = s + "\t\treturn \r\n"; s = s + "\tend\r\n"; } else { // hay que eliniar la tabla hija for (j = 0; j < k; j++) { cfk = lista[j]; if (j == 0) { if (fk.Comentarios.Trim() == "") { s = s + "\t--Elimino la tabla " + cfk.hija + "\r\n"; } else { s = s + "\t--" + fk.Comentarios + "\r\n"; } s = s + "\tdelete " + cfk.hija + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija; } else { s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija; } } s = s + "\r\n"; } } } //-------------------------------------------------------------------------------- s = s + "\t-- agregar el codigo para las comprobaciones adicionales aqui\r\n"; s = s + "\t-- Elimino la tbala " + NombreTabla + " \r\n"; s = s + "\tdelete " + NombreTabla + " where "; n = llaves.Count; for (i = 0; i < n; i++) { Objetos.CParametro pa = llaves[i]; if (i > 0) { s = s + " and "; } s = s + pa.nombre + "=@" + pa.nombre; } s = s + "\r\nend\r\n"; if (OnCodigo != null) { OnCodigo(textBox1.Text, s); } }
private void Crear() { Objetos.CParametro llave = null; System.Collections.Generic.List <Objetos.CParametro> campos; campos = DB.DameCamposTabla(this.NombreTabla); int i, n; string s = "create procedure " + Nombre + "("; n = this.Parametros.Count; //agrego los campos de la tabla (todos) for (i = 0; i < n; i++) { if (i > 0) { s = s + ","; } Objetos.CParametro Parametro = Parametros[i]; s = s + "@" + Parametro.nombre + " " + Parametro.TipoSP; } s = s + ") as\r\n"; s = s + "begin\r\n"; s = s + "\t--procedimiento almacenado que agrega un registro a la tabla " + NombreTabla + " \r\n"; if (CHAuto.Checked == true) { llave = this.LLaves[0]; //hay que obtener la llave de forma automatica //esto solo aplica cuado el campo es numerico s = s + "\tdeclare @" + llave.nombre + " " + llave.TipoSP + " --variable para obtener la llave automaticamente\r\n"; s = s + "\tif exists( select * from " + this.NombreTabla.Trim() + ")\r\n"; s = s + "\tbegin\r\n"; s = s + "\t\t select @" + llave.nombre + "=max(" + llave.nombre + ")+1 from " + this.NombreTabla + " --obtengo un consecutivo\r\n"; s = s + "\tend\r\n"; s = s + "\telse\r\n"; s = s + "\tbegin\r\n"; s = s + "\t\t select @" + llave.nombre + "=0 --es el primer registro, por lo que empieza en cero\r\n"; s = s + "\tend\r\n"; } if (ComboForanes.CheckedItems.Count > 0) { //hay llaves foraneas, por lo que checo si hay que comprobar la integridad System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>(); n = ComboForanes.CheckedIndices.Count; for (i = 0; i < n; i++) { //creo la lista de llaves foraneas que hay que checar Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]); } n = Fks.Count; for (i = 0; i < n; i++) { Objetos.CLLaveForanea fk = Fks[i]; System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id); int j, k; k = lista.Count; Objetos.CCampoFK cfk = null; if (fk.Comentarios.Trim() != "") { s = s + "\t--" + fk.Comentarios + "\r\n"; } for (j = 0; j < k; j++) { cfk = lista[j]; if (j == 0) { s = s + "\tif not exists( select * from " + cfk.maestra + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija; } else { s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija; }; } s = s + ")\r\n"; s = s + "\tbegin\r\n"; s = s + "\t\t--no se ncontro el campo de la llave foranea \r\n"; s = s + "\t\t--por lo que genero una ecepcion \r\n"; s = s + "\t\tRAISERROR ('" + fk.Mensage + "', 16, 1) \r\n"; s = s + "\t\treturn \r\n"; s = s + "\tend\r\n"; } } s = s + "\t --agregar el codigo adicional aqui\r\n"; s = s + "\tinsert into " + NombreTabla + "("; n = Parametros.Count; if (CHAuto.Checked == true) { s = s + llave.nombre; if (n > 0) { s = s + ","; } } for (i = 0; i < n; i++) { if (i > 0) { s = s + ","; } Objetos.CParametro Parametro = Parametros[i]; s = s + Parametro.nombre; } s = s + ")\r\n"; s = s + "\tvalues("; if (CHAuto.Checked == true) { s = s + "@" + llave.nombre; if (n > 0) { s = s + ","; } } for (i = 0; i < n; i++) { if (i > 0) { s = s + ","; } Objetos.CParametro Parametro = Parametros[i]; s = s + "@" + Parametro.nombre; } s = s + ")\r\n"; s = s + "end\r\n"; if (OnCodigo != null) { OnCodigo(textBox1.Text, s); } }