} //agregar grids public void insercion(String tabla, String columnas, String valores, String tabla_detalle, String clave_detalle, Boolean detalle, List <String> val_detalle) { DataTable fragmentos = dame_fragmentos_de(tabla); int indx_fsec = dame_indice_fragmento_principal(fragmentos); String clave = ""; if (indx_fsec > -1) //Si hay secuencia { DataRow fragmento_ppal = fragmentos.Rows[indx_fsec]; Sitio sitio = dame_sitio_del_fragmento(fragmento_ppal); DataSet data_set = new DataSet(); sitio.dame_clave_secuencia(fragmento_ppal[SEC].ToString(), ref clave); sitio.inserta(fragmento_ppal[NOM].ToString(), columnas, "", valores); fragmentos.Rows.RemoveAt(indx_fsec); } if (clave != "") { clave += ","; } if (clave_detalle != "") { clave = clave_detalle + ","; } if (detalle) { insercion_detalle(tabla_detalle, clave, val_detalle); } inserta_dependientes(fragmentos, columnas, clave, valores); llena_superGrid_de(tabla); }
private void inserta_fragmento_V(Sitio sitio, DataRow fragmento, String columnas, String clave, String valores) { List <String> columnas_FV = enlista_columnas_FV(fragmento[NOM].ToString()); List <String> valores_entrada = enlista_valores(valores, true); List <String> columnas_completas = enlista_valores(columnas, true); String cad_col = formatea_cadena_columnas(columnas_FV); String cad_val = ""; clave = clave.Remove(clave.Length - 1, 1); valores_entrada.Insert(0, clave); for (int i = columnas_FV.Count - 1; i >= 0; i--) { if (!columnas_completas.Contains(columnas_FV[i])) { columnas_completas.Insert(0, columnas_FV[i]); } } cad_val = empareja_datos_FV(columnas_completas, columnas_FV, valores_entrada); if (columnas_FV.Count == enlista_valores(cad_val, true).Count) { sitio.inserta(fragmento[NOM].ToString(), cad_col, "", cad_val); } else { MessageBox.Show("Error al emparejar columnas con valores!"); } }
private void inserta_fragmento_H(Sitio sitio, DataRow fragmento, String clave, String valores) { String condicion = fragmento[COND].ToString(); String dependencia = fragmento[DEP].ToString(); List <String> items = dame_elementos_condicion(condicion); int PIZQ = 0, OPERADOR = 1, PDER = 2; Boolean cumple_condicion = false; String valor_entrada; List <String> columnas = new List <string>(); sitio.dame_columnas_de(fragmento[NOM].ToString(), columnas); valor_entrada = dame_valor_entrada(items[PIZQ], columnas, enlista_valores(valores, false)); if (dependencia == "") { cumple_condicion = evalua_condicion(items[OPERADOR], valor_entrada, items[PDER]); } else { List <String> col_dep = new List <string>(); sitio.dame_columnas_de(dependencia, col_dep); cumple_condicion = valida_dependencia(sitio, dependencia, col_dep[0], valor_entrada); } if (cumple_condicion) { sitio.inserta(fragmento[NOM].ToString(), "", clave, valores); } else { //MessageBox.Show("No se realizó la inserción en " + fragmento[NOM].ToString()); } }
private void insercion_detalle(String tabla_detalle, String clave, List <String> val_detalle) { DataTable fragmentos = dame_fragmentos_de(tabla_detalle); foreach (DataRow f in fragmentos.Rows) { Sitio sitio = dame_sitio_del_fragmento(f); foreach (String valor in val_detalle) { sitio.inserta(f[NOM].ToString(), "", clave, valor); } } }
} //agregar las demas grids private void inserta_dependientes(DataTable fragmentos, String columnas, String clave, String valores) { foreach (DataRow fragmento in fragmentos.Rows) { Sitio sitio = dame_sitio_del_fragmento(fragmento); switch (fragmento[TIPO].ToString()) { case "N": case "R": sitio.inserta(fragmento[NOM].ToString(), "", clave, valores); break; case "H": inserta_fragmento_H(sitio, fragmento, clave, valores); break; case "V": inserta_fragmento_V(sitio, fragmento, columnas, clave, valores); break; } } }
private void inserta_fragmento_V(Sitio sitio, DataRow fragmento, String columnas, String clave, String valores) { List<String> columnas_FV = enlista_columnas_FV(fragmento[NOM].ToString()); List<String> valores_entrada = enlista_valores(valores,true); List<String> columnas_completas = enlista_valores(columnas,true); String cad_col = formatea_cadena_columnas(columnas_FV); String cad_val = ""; clave = clave.Remove(clave.Length - 1, 1); valores_entrada.Insert(0, clave); for (int i = columnas_FV.Count-1; i >= 0; i--) if(!columnas_completas.Contains(columnas_FV[i])) columnas_completas.Insert(0,columnas_FV[i]); cad_val = empareja_datos_FV(columnas_completas, columnas_FV, valores_entrada); if (columnas_FV.Count == enlista_valores(cad_val,true).Count) sitio.inserta(fragmento[NOM].ToString(), cad_col, "", cad_val); else MessageBox.Show("Error al emparejar columnas con valores!"); }
private void inserta_fragmento_H(Sitio sitio, DataRow fragmento, String clave, String valores) { String condicion = fragmento[COND].ToString(); String dependencia = fragmento[DEP].ToString(); List<String> items = dame_elementos_condicion(condicion); int PIZQ = 0, OPERADOR = 1, PDER = 2; Boolean cumple_condicion = false; String valor_entrada; List<String> columnas = new List<string>(); sitio.dame_columnas_de(fragmento[NOM].ToString(), columnas); valor_entrada = dame_valor_entrada(items[PIZQ], columnas, enlista_valores(valores,false)); if (dependencia == "") cumple_condicion = evalua_condicion(items[OPERADOR], valor_entrada, items[PDER]); else { List<String> col_dep = new List<string>(); sitio.dame_columnas_de(dependencia, col_dep); cumple_condicion = valida_dependencia(sitio, dependencia, col_dep[0], valor_entrada); } if (cumple_condicion) sitio.inserta(fragmento[NOM].ToString(), "", clave, valores); else { //MessageBox.Show("No se realizó la inserción en " + fragmento[NOM].ToString()); } }