private void timer1_Tick(object sender, EventArgs e) { switch (Estado) { case ESTADOS_BUSQUEDA.INICIANDO_BUSUQUEDA: cBarraProgreso1.Texto = "Extrayendo objetos de la base de datos"; Estado = ESTADOS_BUSQUEDA.EXTRAYENDO_OBJETOS; break; case ESTADOS_BUSQUEDA.EXTRAYENDO_OBJETOS: BuscaObjetos(); Estado = ESTADOS_BUSQUEDA.ANALIZANDO; break; case ESTADOS_BUSQUEDA.ANALIZANDO: AnalizaObjeto(); break; case ESTADOS_BUSQUEDA.FIN: timer1.Enabled = false; ComboConexiones.Enabled = true; ComboGrupos.Enabled = true; ComboTipos.Enabled = true; ComboVer.Enabled = true; button2.Enabled = true; break; } }
private void button2_Click(object sender, EventArgs e) { if (ComboConexiones.SelectedIndex == -1) { System.Windows.Forms.MessageBox.Show("Seleccione una base de datos"); return; } ListaObjetos.Items.Clear(); button2.Enabled = false; ComboConexiones.Enabled = false; ComboGrupos.Enabled = false; ComboTipos.Enabled = false; ComboVer.Enabled = false; label3.Text = "Objetos con diferencias"; textBox1.Text = ""; Diferencias = new List <Visor_sql_2015.Objetos.CDiferenciaObjeto>(); Estado = ESTADOS_BUSQUEDA.INICIANDO_BUSUQUEDA; timer1.Enabled = true; }
private void AnalizaObjeto() { //se trae el primer objeto de la lista y lo busca en la base de datos //externa. /* * primero revisa que exista. SI no existe lo agrega a la lista * si existe, revisa si es un sp o una vista o una tabla * Si es un Sp o una vista, se tare el codigo de las dos bases * y los compara y si son diferentes lo agrega a la lita * si es una tabla checa los campos y si aguno es diferente lo agrea * si es una llave foranea, checa si tienen las mismas tablas y campos * si no coinciden, lo agrega a la lista * si es una llave primaria checa si son los mismos campos */ if (Lista.Count == 0) { cBarraProgreso1.Texto = "Analisis terminado"; Estado = ESTADOS_BUSQUEDA.FIN; return; } //me traigo el primer objeto de la lista Objetos.CSysObject obj = Lista[0]; Lista.RemoveAt(0); System.Collections.Generic.List <Objetos.CSysObject> l; l = DB2.BuscaObjetos(obj.Nombre, obj.TipoObjeto); cBarraProgreso1.Progreso++; cBarraProgreso1.Texto = "Analizando " + obj.Nombre; if (l.Count == 0) { //no lo encontro, por lo que lo agrego a la lista AgregaDiferencia(obj, "No se encontró en la base de datos", 1); return; } Objetos.CSysObject obj2 = l[0]; if (obj2.Nombre != obj.Nombre) { //no lo encontro, por lo que lo agrego a la lista AgregaDiferencia(obj, "No se encontró en la base de datos", 1); return; } switch (obj.TipoObjeto) { case Controladores_DB.TIPOOBJETO.TABLAX: ComparaTablas(obj, obj2); break; case Controladores_DB.TIPOOBJETO.STOREPROCERURE: ComparaCodigo(obj, obj2); break; case Controladores_DB.TIPOOBJETO.VISTA: ComparaCodigo(obj, obj2); break; case Controladores_DB.TIPOOBJETO.TRIGER: ComparaCodigo(obj, obj2); break; case Controladores_DB.TIPOOBJETO.PRIMARYKEY: ComparaLLavesPrimarias(obj, obj2); break; case Controladores_DB.TIPOOBJETO.FOREINGKEY: ComparaLLavesForaneas(obj, obj2); break; } }