public static DialogResult ShowMessageErro(Exception e) { DialogResult dlgResult = DialogResult.Abort; string msgErro = e.Message; if (msgErro.StartsWith("Instrução SQL que seria executada")) msgErro.SaveToFile(Controle.Configuracao.Instance.PastaTemporaria + "Comando.sql", false); if (e.InnerException != null) msgErro += "\n\nExceção interna\n\n" + e.InnerException; msgErro += "\n\nStack Trace\n\n" + e.StackTrace; #if DEBUG ErroBase erro = new ErroBase(msgErro); dlgResult = erro.ShowThreadExceptionDialog(); if (dlgResult == DialogResult.Abort) Environment.Exit(0); #else dlgResult = DialogResult.Ignore; FEI.Nucleo.Utils.EnviarEmail( "Erro AtualDiaria", msgErro, Controle.Configuracao.Instance.PastaTemporaria + "Comando.xml" + "," + Controle.Configuracao.Instance.PastaTemporaria + "Comando.sql" + "," + Controle.Configuracao.Instance.PastaTemporaria + "Comandos.err" + "," + Controle.Configuracao.Instance.PastaTemporaria + "Comandos.xml"); #endif return dlgResult; }
private ListaCampo MapeaCampos() { if (BaseDestino == null) { erro = new EConexaoIndefinida(); return null; } ListaCampo camposDestino = BaseDestino.EsquemaComando("select * from " + TabelaDestino); //string cmd = ComandoSQL.Replace("select ", "select top 0 "); //ListaCampo camposOrigem = BaseOrigem.EsquemaComando(cmd); ListaCampo camposOrigem = BaseOrigem.EsquemaComando(ComandoSQL); // Se for Escolha.Auto, só incluira o nome dos campos // se a diferenca de campos entre origem e destino for superior a 50% double Percent = (camposOrigem.Count * 100) / camposDestino.Count; IncluirNomes = Percent >= 50 ? Escolha.Nao : Escolha.Sim; ListaCampo retorno; if (IncluirNomes == Escolha.Sim) { camposDestino.Clear(); retorno = camposOrigem; } else { // Coloca os campos de origem e destino na mesma ordem, par que não seja // necessário colocar o nome de cada campo na instrução insert. retorno = new ListaCampo(); foreach (Campo origem in camposOrigem) { Campo destino = camposDestino.Find(item => item.Nome.Equals(origem.Nome)); if (string.IsNullOrEmpty(destino.Nome)) destino = camposDestino.Find(item => item.Nome.Contains(origem.Nome)); retorno.Add(destino); } foreach (Campo destino in camposDestino.Where(x => x.IsAutoIncremento)) { if (retorno.IndexOf(destino) == -1) retorno.Add(destino); } retorno.QtdCamposDestino = camposDestino.Count; } return retorno; }