Ir para conteúdo
rtavix

Retornando mensagem para o usuário- Dúvidas

Recommended Posts

 Tenho o seguinte problema, minha célula de data na planilha de excel é um campo obrigatório, no entanto, deixando não preenchido teria que retornar uma mensagem com o log para o usuário, no entanto, não retornou nenhuma mensagem de log informando que a linha S da célula 1 deve ser preenchido com uma data, mas não aparece. Alguém poderia me ajudar, por favor?

 

Segue meu código abaixo:

 

private void  setProcInter (processo processado, interessados interessados, linha DataRow)   
        {  
            int  i = 0;  
experimentar  
                {  
                    DateTime DateSep = DateTime.Parse (line.ItemArray [18] .ToString ());  
                    processInterested.DateSep = DateSep;  
                }  
                pegar  
                {  
                    i = i + 1;  
                    logErro.Append ( "A célula S"  + (i) +  "deve ser completada com uma data. <br> <br>" );  
                    fileInvalidated =  true ;  
                }  
  
}  
  
  
 Privado void  PreliminaryVerification (dados IEnumerable <DataRow>)   
        {  
            int  i = 0;  
  
            bool  importado =  falso ;  
            foreach (var line  in  data)  
            {  
                i = i + 1;  
                // Verifica que nenhuma planilha com o numSEP inserido não tenha   
               // já foi importado                  
                if  (! line.ItemArray [17] .ToString (). Igual a ( "" ))  
                {  
                    if  (aplProcessinterested.listProcInterPorCodSep ( decimal .Parse (line.ItemArray [17] .ToString ())). Contagem! = 0)  
                    {  
                        importado =  true ;  
                        pausa ;  
                    }  
                }  
                outro  
                {  
                    log.Append ( "A célula S para a linha"  + (i) +  "deve ser concluída. <br>" );  
                    fileInvalidated =  true ;  
                }  
}  

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, não traduza o código. Acaba traduzindo mais do que o necessário e acaba prejudicando no entendimento do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 minutos atrás, Gabriel Heming disse:

Olá, não traduza o código. Acaba traduzindo mais do que o necessário e acaba prejudicando no entendimento do código.

Oi Gabriel, me desculpa brother. Olha estou com problemas ao exibir o log para o usuário, tipo, na minha planilha existe a coluna Data Sep, que é campo obrigatório, entretanto, quando eu compilo a aplicação ele salva a planilha no banco com o campo nulo, isso não deveria acontecer, deveria disparar o log informando que deverá ser preenchida, só está faltando isso para finalizar. poderia por gentileza me ajudar cara? Segue meu código atualizado.

 private void setProcInter(Processo processo, Interessado interessado, DataRow linha)
        {
            int i = 0;

				try
                {
                    DateTime DataSep = DateTime.Parse(linha.ItemArray[18].ToString());
                    processoInteressado.DataSep = DataSep;
                }
                catch
                {
                    i = i + 1;
                    logErro.Append("A célula S" + (i) + " deve estar preenchida com uma data. <br>");
                    arquivoInvalidado = true;
                }
 					aplProcessoInteressado.salvar(processoInteressado);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve tratar isso. Seu catch até faz o log, mas não impede o fluxo de processamento e o salvar é executado.

 

Infelizmente, não sei como o seu sistema está tratando exceções nas camadas superiores. O que eu faria é lançar novamente a mesma exception para interromper a execução.

catch
{
    i = i + 1;
    logErro.Append("A célula S" + (i) + " deve estar preenchida com uma data. <br>");
    arquivoInvalidado = true;
  
    throw; //irá lançar a mesma exception para a camada superior
}

aplProcessoInteressado.salvar(processoInteressado);

Entretanto, isso deve ser de acordo com o que seu sistema está tratando ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somente aparece esse outro log, log da Data não aparece.

Log de Importação:
 

No sistema não existe vara de execução associada a comarca informada na linha 371. Favor corrigir o sistema. 

Editado por Gabriel Heming
remover o quote

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não cai no catch, meu código não irá fazer nada mesmo.

 

Vamos tentar uma abordagem diferente, pois, DateTime.Parse deveria lançar uma exception. Utilize TryParse no lugar, que retornará true/false no processo (e é mais rápido em execução).

DateTime DataSep;

if (DateTime.TryParse(linha.ItemArray[18].ToString() , out DataSep))  {
    processoInteressado.DataSep = DataSep;
  
    //Apenas para ter certeza da execução do código.
    logErro.Append("Adicionou a data corretamente");
}
else
{
    i = i + 1;
    logErro.Append("A célula S" + (i) + " deve estar preenchida com uma data. <br>");
    arquivoInvalidado = true;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
32 minutos atrás, Gabriel Heming disse:

Se não cai no catch, meu código não irá fazer nada mesmo.

 

Vamos tentar uma abordagem diferente, pois, DateTime.Parse deveria lançar uma exception. Utilize TryParse no lugar, que retornará true/false no processo (e é mais rápido em execução).


DateTime DataSep;

if (DateTime.TryParse(linha.ItemArray[18].ToString() , out DataSep))  {
    processoInteressado.DataSep = DataSep;
  
    //Apenas para ter certeza da execução do código.
    logErro.Append("Adicionou a data corretamente");
}
else
{
    i = i + 1;
    logErro.Append("A célula S" + (i) + " deve estar preenchida com uma data. <br>");
    arquivoInvalidado = true;
}

 

Oi amigo, eu adicionei novamente seu código, coloquei o breakpoint ao tentar compilar, ele não passa no if de jeito nenhum, eu não sei se não está dentro das chaves corretamente, resolvi print meu código pra você ver como está, não retorna ainda o log informando para preencher a data, tenso isso :9

aplicação.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se nem o breakpoint foi pego, há alguma coisa nesse código. Eu consigo imaginar as situações abaixo:

  • O método setProcInter não está sendo executado;
  • Algum código, antes do código em questão, está lançando alguma exception que está sendo tratada em outro lugar;
  • O código que você está executando não é o mesmo que você está fazendo deploy (não é o código atualizado).

Faça o debug de toda a execução e veja o que está ocorrendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vou procurar compilar novamente e vê o que estou fazendo de errado. Mas até o momento, te agradeço pelas sugestões, que são bem valiosas e guardarei de aprendizagem no dia- a- dia! 

Editado por Gabriel Heming
remover o quote

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por laumello12
      Galera ajudinha
      Como faço para consumir um web service pronto em um projeto. Preciso só que ele busque no web service e traga na web 
      HELP
    • Por ValérinhaSilva255
      Precisamos criar um teatro, onde utilizaremos os conceitos de uma matriz em C#. Esta matriz, deverá ter, no máximo, 150 lugares.

      O programa deverá reservar uma poltrona, cobrando para isso do usuário 40% do valor total do ingresso, que deverá ser informado na tela inicial do programa.

      Quando ocupada uma poltrona, o usuário poderá pagar 60% ou 100% do valor total (caso esteja ou não reservada anteriormente). No caso de desmarcação de reserva, deverá ser devolvido 50% do valor da reserva (portanto, 20% do valor total do ingresso).

      O programa poderá ocupar, reservar, liberar poltronas.
      Um espetáculo somente poderá acontecer se a arrecadação total for maior ou igual a 51% do valor total do teatro. 

      Quando o teatro for fechado, pede-se para que se informe:
      Total de Lugares reservados: XX
      Valor total das reservas: R$00,00
      Total de Lugares Ocupados: YY
      Valor total de Ocupantes: R$00,00
      Total de Lugares Livres: ZZ

      Mínimo para realização do Evento: R$999,99. Valor Total Arrecadado: R$989,00
      Se o valor arrecadado for MAIOR que 51% do mínimo para realização, deverá ACONTECER o espetáculo, caso contrário, mostrar quantos locais ainda precisariam ser ocupados, da seguinte forma: Precisaríamos de 10 lugares Ocupados ou 30 lugares reservados para que o espetáculo pudesse ocorrer.

      O visitante deverá ter o “mapa” de cadeiras a sua disposição.

      O visitante irá escolher sua posição informando fileira e cadeira desejada.
      EXEMPLO DE EXECUÇÃO
      PREÇO DO INGRESSO: R$100,00

      ***** ***** ****** Mapa do Teatro ***** ***** *****

      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

      ***** ***** ****** Mapa do Teatro ***** ***** *****

      O que você deseja fazer?
      [0] - Finalizar o programa
      [1] - Abrir Espetáculo
      [2] - Reservar uma poltrona
      [3] - Liberar poltrona reservada
      [4] - Vender poltrona
      [7] - Finalizar vendas
      [9] - Parciais do Espetáculo

      Resumo das Operações:
      0 - Finaliza o programa e retorna para o sistema operacional.
      1 - Libera a sala do teatro, para que o programa possa ser executado outras vezes, para outros espetáculos (Zera todas as variáveis).
      2 - Reservar poltrona (Cobrar 40% do valor do ingresso)
      3 - Liberar poltrona reservada (Devolve 20% do valor do ingresso)
      4 - Vender poltrona (Recebe valor integral do ingresso - 100%)
      7 - Finalizar vendas (listar todos os resultados)
      9 - Parciais (saber quanto esta pago em cada situação. Reservas, vendas, etc.) Pode ser solicitado a qualquer momento.
    • Por Fiori
      Eu, estou cursando SI, e estou no primeiro semestre, o professor passou uma lista de exercícios, consegue resolver todos mas quando cheguei nesse não consigo resolver.
      O exercício é esse:  "Entrar via teclado com o sexo de determinado usuário, aceitar somente “F” ou “M” como respostas válidas.".
      Independente se a resposta for "F", "f", "M", "m" ou qualquer outra o loop do Do se repete. Oque preciso fazer para acontecer o if?
      string genero; Console.Clear(); Console.WriteLine("Caso seja mulher, digite [F]."); Console.WriteLine("Caso seja homem, digite [M]."); genero = Console.ReadLine(); do { Console.WriteLine("Valor invalido."); Console.WriteLine("Digite [F] ou [M]."); genero = Console.ReadLine(); } while (genero != "F" || genero != "M"); if (genero == "F" || genero == "M") { Console.WriteLine("Esse valor foi aceito."); Console.ReadKey(); }
       
    • Por Jonathacsantos
      Boa tarde, sou novo na programação, comecei por conta própria e agora estou com um pequeno problema, meu programa depende de uma pasta criada pra executar um .exe que fica dentro de uma outra pasta, sendo que eu preciso que ele leia o .exe independente de onde ele fica instalado, vou mostrar uma parte do código para tentar explicar 
      private void AcessRemo_Click(object sender, EventArgs e) { foreach ( var process in Process.GetProcessesByName("TeamViewer")) { process.Kill(); } Process.Start("C:\\Teste\\suporteremoto.exe"); ele fecha um teamviewer em execução e executa uma versão especifica do teamviewer, sendo que nos meus testes funciona pq eu tenho essa pasta ai chamada teste, mas o programa instala em Program Files, sendo que se for 64, ele vai pra Program Files (x86), dai gostaria de fazer ele ler, tipo um [LocalPath] , mas não sei como , se alguem puder me ajudar ou me da uma luz eu agradeço muito.
    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.