Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rtavix

Dúvidas de como pegar o indice de um DataTable

Recommended Posts

Queria pegar o indice do DataTable e passar esse indice no log para o usuario.

Tentei passar o contato, mas não funciona.

Segue o código:

 

 /*Stopwatch relogio = new Stopwatch();
            relogio.Start();*/
            int linha = 0;
            DataTable Dados = new DataTable();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
                else
                {
                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);
                        Dados = DadosExcel(Excel);

                        var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
                        //Elimina a última linha
                        registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);
                        //ler de 100 em 100 regisros
                        int quantidade_por_pagina = 100;
                        int total_de_paginas;
                        //Conta os registros válidos
                        int qtd_total_registros = registrosValidos.Count();
                        //Realiza o calculo matemáticos para total de paginas.
                        total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);

                        if (Dados.Rows.Count > 0)
                        {
                            
                            bool layoutValido = VerificaLayout(Dados);

                            if (!layoutValido)
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                            else
                            {
                                VerificacaoPreliminar(registrosValidos);
                                //Criando as tarefas paralelas
                                List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();

                                if (!arquivoInvalidado)
                                {
                                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros que tem interessados duplicados.
                                    this.ValidaDuplicidadeInteressado();

                                    for (int i = 0; i < total_de_paginas; i++)
                                    {
                                        var pagina = i;
                                        //leio as 100 linhas
                                        var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);

                                        //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo
                                        var data_rows_divididos = linhasPorPagina.SplitList(10);

                                        foreach (var linhasDivididas in data_rows_divididos)
                                        {
                                            //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS
                                            TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, i));
                                        }
                                    }

                                    //INICIOS AS TAREFAS PARALELAS
                                    foreach (var tarefa in TarefasParalelas)
                                        tarefa.Start();

                                    // AGORA ESPERO TODAS TAREFAS CONCLUIREM
                                    System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());

                                   // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                                    if (listaGravarProcInter.Count != 0)
                                    {
                                        foreach (ProcessoInteressado item in listaGravarProcInter)
                                        {
                                            aplProcessoInteressado.salvar(item);
                                        }
                                    }

                                    if (listaLogsAuditoria.Count != 0)
                                    {
                                        foreach (var item in listaLogsAuditoria)
                                        {
                                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                        }
                                    }
                                    //Contador de linhas
                                   
                                    linha = linha + 1;
                                    Processo processo = new Processo();
                                    logimportacao.Visible = true;
                                    loglbl.Text = ("O interessado informado na linha " + (linha+1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                                    ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                                }

                                else
                                {
                                    logimportacao.Visible = true;
                                    loglbl.Text = log.ToString();
                                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                                }
                            }
                        }
                    }
                }
            }
            //Tempo de importação.
            /*relogio.Stop();
            Debug.WriteLine("#############" + relogio.Elapsed.ToString());*/
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, quintelab disse:

Não entendi, o seu datatable é a variável dados certo ?
Qual indice quer pegar ? Não achei em nenhum momento do seu código você percorrendo as linhas do seu datatable, não achei nenhum for ou foreach.

Sim, meu dataTable é um variavel. Eu quero exibir dentro do meu log, o indece:

 

Log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

Eu quero exibir o indice da linha, " O interessado informado na linha 5 foi adicionado novamente ao processo 123565898.

O interessado informado na linha 9 foi adicionado novamente ao processo 123565898.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho certeza se é a solução para o seu problema, substitua:

if (Dados.Rows.Count > 0)
{

Por:

for (int i = 0; i < Dados.Rows.Count; i++)
{

No seu log use a variável i:

Log.Append("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

Mas teste o que estou sugerindo, do jeito que eu postei o código será executado várias vezes, com base no número de linhas do seu DataTable.

Compartilhar este post


Link para o post
Compartilhar em outros sites
35 minutos atrás, quintelab disse:

Não tenho certeza se é a solução para o seu problema, substitua:


if (Dados.Rows.Count > 0)
{

Por:


for (int i = 0; i < Dados.Rows.Count; i++)
{

No seu log use a variável i:


Log.Append("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

Mas teste o que estou sugerindo, do jeito que eu postei o código será executado várias vezes, com base no número de linhas do seu DataTable.

Ei amigo, então, testei aqui e deu essa mensagem dentro do outro for:

 for (int i = 0; i < total_de_paginas; i++)

Da erro no int i = 0; informando que a variável name i não pode ser declarada porque já existe. Como é um outro for para outra situação, poderia declarar uma outra variável? ou teria como aproveitar essa função que você passou no seu novo for?

Compartilhar este post


Link para o post
Compartilhar em outros sites
31 minutos atrás, quintelab disse:

É só mudar o nome da variável, ao invés de i, use outro nome.

Sim, segui esse passo, só alterei a variável.

ao compilar deu o seguinte erro nessa linha do código, tipo essa parte do código outro colega que fez:

Esse é o código de abrir a sessão com o banco

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Mapping.Attributes;
using NHibernate.Cfg;
using NHibernate;
using System.IO;
using NHibernate.Context;

namespace SDPJDominio.DataAccess
{
    public class NhibernateHelper
    {
        private ISessionFactory sessionFactory;        
        
        public static ISession GetSessao()
        {
            return Instancia.GetSessionFactory().GetCurrentSession();
        }

        public static ISessionFactory Teste()
        {
            MemoryStream stream = new System.IO.MemoryStream();
            HbmSerializer.Default.Validate = true;
            HbmSerializer.Default.Serialize(stream, System.Reflection.Assembly.GetExecutingAssembly());
            stream.Position = 0;
            Configuration configuracao = new Configuration();            
            configuracao.Configure();
            configuracao.SetProperty("connection.connection_string", ConfigNhibernate.getConfig()); //add essa linha
            configuracao.SetProperty("current_session_context_class", "thread_static"); //add essa linha
            configuracao.AddInputStream(stream);
            stream.Close();

            Instancia.sessionFactory = configuracao.BuildSessionFactory();
            return Instancia.sessionFactory;
        }
       
        public NhibernateHelper()
        {                    
            MemoryStream stream = new System.IO.MemoryStream();
            HbmSerializer.Default.Validate = true;
            HbmSerializer.Default.Serialize(stream, System.Reflection.Assembly.GetExecutingAssembly());
            stream.Position = 0;
            Configuration configuracao = new Configuration();
            configuracao.Configure();
            configuracao.SetProperty("connection.connection_string", ConfigNhibernate.getConfig()); //add essa linha                
            configuracao.AddInputStream(stream);
            stream.Close();
                
            sessionFactory = configuracao.BuildSessionFactory();            
        }

        public static ISessionFactory SessionFactory
        {
            get { return Instancia.sessionFactory; }
        }

        private ISessionFactory GetSessionFactory()
        {
            return sessionFactory;
        }

        public static NhibernateHelper Instancia
        {
            get 
            {
                return CriarGerenciadorDeSessao.gerenciadorDeSessao; 
            }
        }

        public static ISession AbrirSessao()
        {
            return Instancia.GetSessionFactory().OpenSession();
        }

        public static void RecarregarSessao(object obj)
        {
            SessaoCorrente.Refresh(obj);
        }

        public static ISession SessaoCorrente
        {
            get
            {
                return Instancia.GetSessionFactory().GetCurrentSession();
            }
        }

        class CriarGerenciadorDeSessao
        {
            internal static readonly NhibernateHelper gerenciadorDeSessao = new NhibernateHelper();
        }   
    }
}

 

 

 

 

31 minutos atrás, quintelab disse:

É só mudar o nome da variável, ao invés de i, use outro nome.

porém da erro nessa linha:

 

public static ISession SessaoCorrente
        {
            get
            {
                return Instancia.GetSessionFactory().GetCurrentSession();
            }
        }

Com a seguinte mensagem:

No session bound to the current context

Compartilhar este post


Link para o post
Compartilhar em outros sites
53 minutos atrás, quintelab disse:

Mudar o nome da variável não tem nada com o erro que postou, deve ser outra coisa que terá que debugar pra descobrir.

Entendi. Amigo, muito obrigado. Vou procurar resolver isso, e tentar compilar pra ver se corrigiu aquele problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 20/04/2018 at 10:36, rtavix disse:

Ei amigo, então, testei aqui e deu essa mensagem dentro do outro for:


 for (int i = 0; i < total_de_paginas; i++)

Da erro no int i = 0; informando que a variável name i não pode ser declarada porque já existe. Como é um outro for para outra situação, poderia declarar uma outra variável? ou teria como aproveitar essa função que você passou no seu novo for?

Quintelab, amigo está aparecendo somente um log dessa forma e também não aparece o numero do processo no log:

 

foi esse o resultado:

 

O interessado informado na linha 635 foi adicionado novamente ao processo 

 

Na frente do processo era para aparecer o numero, e teria que aparecer 9 logs no total :/

 

Segue o código alterado.

 

protected void importar_Click(object sender, EventArgs e)
        {
            /*Stopwatch relogio = new Stopwatch();
            relogio.Start();*/
            //int linha = 0;
            DataTable Dados = new DataTable();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
                else
                {
                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);
                        Dados = DadosExcel(Excel);

                        var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
                        //Elimina a última linha
                        registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);
                        //ler de 100 em 100 regisros
                        int quantidade_por_pagina = 100;
                        int total_de_paginas;
                        //Conta os registros válidos
                        int qtd_total_registros = registrosValidos.Count();
                        //Realiza o calculo matemáticos para total de paginas.
                        total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);

                        for (int i = 0; i < Dados.Rows.Count; i++ )
                        {

                            bool layoutValido = VerificaLayout(Dados);

                            if (!layoutValido)
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                            else
                            {
                                VerificacaoPreliminar(registrosValidos);
                                //Criando as tarefas paralelas
                                List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();

                                if (!arquivoInvalidado)
                                {
                                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros que tem interessados duplicados.
                                    this.ValidaDuplicidadeInteressado();

                                    for (int j = 0; j < total_de_paginas; j++)
                                    {

                                        var pagina = j;
                                        //leio as 100 linhas
                                        var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);

                                        //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo
                                        var data_rows_divididos = linhasPorPagina.SplitList(10);

                                        foreach (var linhasDivididas in data_rows_divididos)
                                        {
                                            //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS
                                            TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j));
                                        }
                                    }

                                    //INICIOS AS TAREFAS PARALELAS
                                    foreach (var tarefa in TarefasParalelas)
                                        tarefa.Start();

                                    // AGORA ESPERO TODAS TAREFAS CONCLUIREM
                                    System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());

                                    // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");
        
                            }
                        }
                            Processo processo = new Processo();
                            logimportacao.Visible = true;
                            loglbl.Text = ("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                            //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                            ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                    }
                        if (listaGravarProcInter.Count != 0)
                        {
                            foreach (ProcessoInteressado item in listaGravarProcInter)
                            {
                                aplProcessoInteressado.salvar(item);
                            }
                        }

                        if (listaLogsAuditoria.Count != 0)
                        {
                            foreach (var item in listaLogsAuditoria)
                            {
                                aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                            }
                        }
                        //Contador de linhas

                      }


                    else
                    {
                        logimportacao.Visible = true;
                        loglbl.Text = log.ToString();
                        ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                    }

                }
            }
            //Tempo de importação.
            /*relogio.Stop();
            Debug.WriteLine("#############" + relogio.Elapsed.ToString());*/
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma com que esta fazendo vai aparecer somente o último valor:
 

loglbl.Text = ("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>")

Você tem que manter o valor que estava antes:

 

loglbl.Text = loglbl.Text + "O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"


Por que não esta aparecendo o número, não tem ideia.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, quintelab disse:

Da forma com que esta fazendo vai aparecer somente o último valor:
 


loglbl.Text = ("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>")

Você tem que manter o valor que estava antes:

 


loglbl.Text = loglbl.Text + "O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"


Por que não esta aparecendo o número, não tem ideia.

Eu fiz a alteração aqui, porém está trazendo todos os registros importado, entretanto era para trazer somente 9 registros.

 

 

Log de Importação:
 

O interessado informado na linha 0 foi adicionado novamente ao processo 
O interessado informado na linha 1 foi adicionado novamente ao processo 
O interessado informado na linha 2 foi adicionado novamente ao processo 
O interessado informado na linha 3 foi adicionado novamente ao processo 
O interessado informado na linha 4 foi adicionado novamente ao processo 
O interessado informado na linha 5 foi adicionado novamente ao processo 
O interessado informado na linha 6 foi adicionado novamente ao processo 
O interessado informado na linha 7 foi adicionado novamente ao processo 
O interessado informado na linha 8 foi adicionado novamente ao processo 
O interessado informado na linha 9 foi adicionado novamente ao processo 
O interessado informado na linha 10 foi adicionado novamente ao processo 
O interessado informado na linha 11 foi adicionado novamente ao processo 
O interessado informado na linha 12 foi adicionado novamente ao processo 
O interessado informado na linha 13 foi adicionado novamente ao processo 
O interessado informado na linha 14 foi adicionado novamente ao processo 
O interessado informado na linha 15 foi adicionado novamente ao processo 
O interessado informado na linha 16 foi adicionado novamente ao processo 
O interessado informado na linha 17 foi adicionado novamente ao processo 
O interessado informado na linha 18 foi adicionado novamente ao processo 
O interessado informado na linha 19 foi adicionado novamente ao processo 
O interessado informado na linha 20 foi adicionado novamente ao processo 
O interessado informado na linha 21 foi adicionado novamente ao processo 
O interessado informado na linha 22 foi adicionado novamente ao processo 
O interessado informado na linha 23 foi adicionado novamente ao processo 
O interessado informado na linha 24 foi adicionado novamente ao processo 
O interessado informado na linha 25 foi adicionado novamente ao processo 
O interessado informado na linha 26 foi adicionado novamente ao processo 
O interessado informado na linha 27 foi adicionado novamente ao processo 
O interessado informado na linha 28 foi adicionado novamente ao processo 
O interessado informado na linha 29 foi adicionado novamente ao processo 
O interessado informado na linha 30 foi adicionado novamente ao processo 
O interessado informado na linha 31 foi adicionado novamente ao processo 
O interessado informado na linha 32 foi adicionado novamente ao processo 
O interessado informado na linha 33 foi adicionado novamente ao processo 
O interessado informado na linha 34 foi adicionado novamente ao processo 
O interessado informado na linha 35 foi adicionado novamente ao processo 
O interessado informado na linha 36 foi adicionado novamente ao processo 
O interessado informado na linha 37 foi adicionado novamente ao processo 
O interessado informado na linha 38 foi adicionado novamente ao processo 
O interessado informado na linha 39 foi adicionado novamente ao processo 
O interessado informado na linha 40 foi adicionado novamente ao processo 
O interessado informado na linha 41 foi adicionado novamente ao processo 
O interessado informado na linha 42 foi adicionado novamente ao processo 
O interessado informado na linha 43 foi adicionado novamente ao processo 
O interessado informado na linha 44 foi adicionado novamente ao processo 
O interessado informado na linha 45 foi adicionado novamente ao processo 
O interessado informado na linha 46 foi adicionado novamente ao processo 
O interessado informado na linha 47 foi adicionado novamente ao processo 
O interessado informado na linha 48 foi adicionado novamente ao processo 
O interessado informado na linha 49 foi adicionado novamente ao processo 
O interessado informado na linha 50 foi adicionado novamente ao processo 
O interessado informado na linha 51 foi adicionado novamente ao processo 
O interessado informado na linha 52 foi adicionado novamente ao processo 
O interessado informado na linha 53 foi adicionado novamente ao processo 
O interessado informado na linha 54 foi adicionado novamente ao processo 
O interessado informado na linha 55 foi adicionado novamente ao processo 
O interessado informado na linha 56 foi adicionado novamente ao processo 
O interessado informado na linha 57 foi adicionado novamente ao processo 
O interessado informado na linha 58 foi adicionado novamente ao processo 
O interessado informado na linha 59 foi adicionado novamente ao processo 
O interessado informado na linha 60 foi adicionado novamente ao processo 
O interessado informado na linha 61 foi adicionado novamente ao processo 
O interessado informado na linha 62 foi adicionado novamente ao processo 
O interessado informado na linha 63 foi adicionado novamente ao processo 
O interessado informado na linha 64 foi adicionado novamente ao processo 
O interessado informado na linha 65 foi adicionado novamente ao processo 
O interessado informado na linha 66 foi adicionado novamente ao processo 
O interessado informado na linha 67 foi adicionado novamente ao processo 
O interessado informado na linha 68 foi adicionado novamente ao processo 
O interessado informado na linha 69 foi adicionado novamente ao processo 
O interessado informado na linha 70 foi adicionado novamente ao processo 
O interessado informado na linha 71 foi adicionado novamente ao processo 
O interessado informado na linha 72 foi adicionado novamente ao processo 
O interessado informado na linha 73 foi adicionado novamente ao processo 
O interessado informado na linha 74 foi adicionado novamente ao processo 
O interessado informado na linha 75 foi adicionado novamente ao processo 
O interessado informado na linha 76 foi adicionado novamente ao processo 
O interessado informado na linha 77 foi adicionado novamente ao processo 
O interessado informado na linha 78 foi adicionado novamente ao processo 
O interessado informado na linha 79 foi adicionado novamente ao processo 
O interessado informado na linha 80 foi adicionado novamente ao processo 
O interessado informado na linha 81 foi adicionado novamente ao processo 
O interessado informado na linha 82 foi adicionado novamente ao processo 
O interessado informado na linha 83 foi adicionado novamente ao processo 
O interessado informado na linha 84 foi adicionado novamente ao processo 
O interessado informado na linha 85 foi adicionado novamente ao processo 
O interessado informado na linha 86 foi adicionado novamente ao processo 
O interessado informado na linha 87 foi adicionado novamente ao processo 
O interessado informado na linha 88 foi adicionado novamente ao processo 
O interessado informado na linha 89 foi adicionado novamente ao processo 
O interessado informado na linha 90 foi adicionado novamente ao processo 
O interessado informado na linha 91 foi adicionado novamente ao processo 
O interessado informado na linha 92 foi adicionado novamente ao processo 
O interessado informado na linha 93 foi adicionado novamente ao processo 
O interessado informado na linha 94 foi adicionado novamente ao processo 
O interessado informado na linha 95 foi adicionado novamente ao processo 
O interessado informado na linha 96 foi adicionado novamente ao processo 
O interessado informado na linha 97 foi adicionado novamente ao processo 
O interessado informado na linha 98 foi adicionado novamente ao processo 
O interessado informado na linha 99 foi adicionado novamente ao processo 
O interessado informado na linha 100 foi adicionado novamente ao processo 
O interessado informado na linha 101 foi adicionado novamente ao processo 
O interessado informado na linha 102 foi adicionado novamente ao processo 
O interessado informado na linha 103 foi adicionado novamente ao processo 
O interessado informado na linha 104 foi adicionado novamente ao processo 
O interessado informado na linha 105 foi adicionado novamente ao processo 
O interessado informado na linha 106 foi adicionado novamente ao processo 
O interessado informado na linha 107 foi adicionado novamente ao processo 
O interessado informado na linha 108 foi adicionado novamente ao processo 
O interessado informado na linha 109 foi adicionado novamente ao processo 
O interessado informado na linha 110 foi adicionado novamente ao processo 
O interessado informado na linha 111 foi adicionado novamente ao processo 
O interessado informado na linha 112 foi adicionado novamente ao processo 
O interessado informado na linha 113 foi adicionado novamente ao processo 
O interessado informado na linha 114 foi adicionado novamente ao processo 
O interessado informado na linha 115 foi adicionado novamente ao processo 
O interessado informado na linha 116 foi adicionado novamente ao processo 
O interessado informado na linha 117 foi adicionado novamente ao processo 
O interessado informado na linha 118 foi adicionado novamente ao processo 
O interessado informado na linha 119 foi adicionado novamente ao processo 
O interessado informado na linha 120 foi adicionado novamente ao processo 
O interessado informado na linha 121 foi adicionado novamente ao processo 
O interessado informado na linha 122 foi adicionado novamente ao processo 
O interessado informado na linha 123 foi adicionado novamente ao processo 
O interessado informado na linha 124 foi adicionado novamente ao processo 
O interessado informado na linha 125 foi adicionado novamente ao processo 
O interessado informado na linha 126 foi adicionado novamente ao processo 
O interessado informado na linha 127 foi adicionado novamente ao processo 
O interessado informado na linha 128 foi adicionado novamente ao processo 
O interessado informado na linha 129 foi adicionado novamente ao processo 
O interessado informado na linha 130 foi adicionado novamente ao processo 
O interessado informado na linha 131 foi adicionado novamente ao processo 
O interessado informado na linha 132 foi adicionado novamente ao processo 
O interessado informado na linha 133 foi adicionado novamente ao processo 
O interessado informado na linha 134 foi adicionado novamente ao processo 
O interessado informado na linha 135 foi adicionado novamente ao processo 
O interessado informado na linha 136 foi adicionado novamente ao processo 
O interessado informado na linha 137 foi adicionado novamente ao processo 
O interessado informado na linha 138 foi adicionado novamente ao processo 
O interessado informado na linha 139 foi adicionado novamente ao processo 
O interessado informado na linha 140 foi adicionado novamente ao processo 
O interessado informado na linha 141 foi adicionado novamente ao processo 
O interessado informado na linha 142 foi adicionado novamente ao processo 
O interessado informado na linha 143 foi adicionado novamente ao processo 
O interessado informado na linha 144 foi adicionado novamente ao processo 
O interessado informado na linha 145 foi adicionado novamente ao processo 
O interessado informado na linha 146 foi adicionado novamente ao processo 
O interessado informado na linha 147 foi adicionado novamente ao processo 
O interessado informado na linha 148 foi adicionado novamente ao processo 
O interessado informado na linha 149 foi adicionado novamente ao processo 
O interessado informado na linha 150 foi adicionado novamente ao processo 
O interessado informado na linha 151 foi adicionado novamente ao processo 
O interessado informado na linha 152 foi adicionado novamente ao processo 
O interessado informado na linha 153 foi adicionado novamente ao processo 
O interessado informado na linha 154 foi adicionado novamente ao processo 
O interessado informado na linha 155 foi adicionado novamente ao processo 
O interessado informado na linha 156 foi adicionado novamente ao processo 
O interessado informado na linha 157 foi adicionado novamente ao processo 
O interessado informado na linha 158 foi adicionado novamente ao processo 
O interessado informado na linha 159 foi adicionado novamente ao processo 
O interessado informado na linha 160 foi adicionado novamente ao processo 
O interessado informado na linha 161 foi adicionado novamente ao processo 
O interessado informado na linha 162 foi adicionado novamente ao processo 
O interessado informado na linha 163 foi adicionado novamente ao processo 
O interessado informado na linha 164 foi adicionado novamente ao processo 
O interessado informado na linha 165 foi adicionado novamente ao processo 
O interessado informado na linha 166 foi adicionado novamente ao processo 
O interessado informado na linha 167 foi adicionado novamente ao processo 
O interessado informado na linha 168 foi adicionado novamente ao processo 
O interessado informado na linha 169 foi adicionado novamente ao processo 
O interessado informado na linha 170 foi adicionado novamente ao processo 
O interessado informado na linha 171 foi adicionado novamente ao processo 
O interessado informado na linha 172 foi adicionado novamente ao processo 
O interessado informado na linha 173 foi adicionado novamente ao processo 
O interessado informado na linha 174 foi adicionado novamente ao processo 
O interessado informado na linha 175 foi adicionado novamente ao processo 
O interessado informado na linha 176 foi adicionado novamente ao processo 
O interessado informado na linha 177 foi adicionado novamente ao processo 
O interessado informado na linha 178 foi adicionado novamente ao processo 
O interessado informado na linha 179 foi adicionado novamente ao processo 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, quintelab disse:

Da forma com que esta fazendo vai aparecer somente o último valor:
 


loglbl.Text = ("O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>")

Você tem que manter o valor que estava antes:

 


loglbl.Text = loglbl.Text + "O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"


Por que não esta aparecendo o número, não tem ideia.

Então quinteLab, amigo eu alterei aqui conforme a sua sugestão porém está puxando o indice 0, sendo que tereia que aparecer essas mensagens:

 

O interessado informado na linha 32 foi adicionado ao processo 0015895755635-29.

O interessado informado na linha 32 foi adicionado ao processo 0032895885258-18.

O interessado informado na linha 32 foi adicionado ao processo 0015545487445-78.

O interessado informado na linha 32 foi adicionado ao processo 0325888885878-82.

O interessado informado na linha 32 foi adicionado ao processo 0248956687569-31.

 

Só que está trazendo a relação de todos os processos :(

Segue o código alterado:

 

for (int i = 0; i < Dados.Rows.Count; i++ )
                        {

                            bool layoutValido = VerificaLayout(Dados);

                            if (!layoutValido)
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                            else
                            {
                                VerificacaoPreliminar(registrosValidos);
                                //Criando as tarefas paralelas
                                List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();

                                if (!arquivoInvalidado)
                                {
                                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros que tem interessados duplicados.
                                    this.ValidaDuplicidadeInteressado();

                                    for (int j = 0; j < total_de_paginas; j++)
                                    {

                                        var pagina = j;
                                        //leio as 100 linhas
                                        var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);

                                        //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo
                                        var data_rows_divididos = linhasPorPagina.SplitList(10);

                                        foreach (var linhasDivididas in data_rows_divididos)
                                        {
                                            //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS
                                            TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j));
                                        }
                                    }

                                    //INICIOS AS TAREFAS PARALELAS
                                    foreach (var tarefa in TarefasParalelas)
                                        tarefa.Start();

                                    // AGORA ESPERO TODAS TAREFAS CONCLUIREM
                                    System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());

                                    // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");
        
                            }
                        }
                            Processo processo = new Processo();
                            logimportacao.Visible = true;
                            loglbl.Text = loglbl.Text +"O interessado informado na linha " + i.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";

                            //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                            ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                    }
                        if (listaGravarProcInter.Count != 0)
                        {
                            foreach (ProcessoInteressado item in listaGravarProcInter)
                            {
                                aplProcessoInteressado.salvar(item);
                            }
                        }

                        if (listaLogsAuditoria.Count != 0)
                        {
                            foreach (var item in listaLogsAuditoria)
                            {
                                aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                            }
                        }
                        //Contador de linhas

                      }


                    else
                    {
                        logimportacao.Visible = true;
                        loglbl.Text = log.ToString();
                        ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                    }

                }

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, quintelab disse:

Aí é contigo, tem que ver sua lógica, seus IF e onde esta colocando o seu log.

Sim, verdade. olha te agradeço e consegui aqui :). Eu queria fazer um curso on line de programação, de preferencia de lógica e depois c#, você teria algum para me indicar Quintelab?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não moro no Brasil e hoje não sei quais empresas teriam um bom conteúdo nessa área.

Eu costumo estudar online, 2 sites muitos bons são: Udemy e pluralsight

Mas sempre é possível encontrar conteúdo grátis no Youtube

Compartilhar este post


Link para o post
Compartilhar em outros sites
36 minutos atrás, quintelab disse:

Não moro no Brasil e hoje não sei quais empresas teriam um bom conteúdo nessa área.

Eu costumo estudar online, 2 sites muitos bons são: Udemy e pluralsight

Mas sempre é possível encontrar conteúdo grátis no Youtube

Valeu amigo, vou está providenciando isso logo.

Criei um outro tópico, se voc~e puder me ajudar, agradeço.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por luis0101010
      1.      Programe uma função que recebe um número inteiro e verifica se todos os dígitos deste número são iguais ou diferente e liste eles em ordens crescentes.
      Obs: Código fonte com no mínimo de 10 dígitos.
       
      Como exemplo, os números 456, −235, e 5 satisfazem esta condição, enquanto que o número 6 não.
       
      2.      Crie também a função main que recebe o valor do número digitado pelo usuário e exibe na tela uma mensagem informando se os dígitos deste número são iguais.
       
      Exemplo:
      --Exemplo 1:
      Informe um número:
      -555
      Numero informado possui todos os dígitos iguais
      --Exemplo 2:
      Informe um número:
      67
      Número informado não possui todos os dígitos iguais
    • Por Ilano
      Olá pessoal,
       
      Utilizo Visual Studio para desenvolver minhas aplicações web e estou tendo problemas ao montar meus submenus. O menu normal está sendo montado direitinho mas, quando preciso montar os submenus não dá certo. Já pesquisei pela web e o máximo que consegui foi a montagem de um menu normal. Alguém poderia me dar uma dica de como melhorar meu código para que finalmente consiga montar um menu com vários níveis de submenus? Abaixo segue todo o código.
       
      Aqui está minha tabela:
      CREATE TABLE [dbo].[MENUS]( [ID] [int] NOT NULL, [PARENTEID] [int] NULL, [NOME] [varchar](100) NOT NULL, [DESCRICAO] [varchar](100) NOT NULL, [ARQUIVO] [varchar](100) NULL, [TARGETMENU] [varchar](10) NULL, [NIVEL] [int] NULL, [ORDENAR] [int] NOT NULL, CONSTRAINT [PK_MENUS] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[MENUS] WITH CHECK ADD CONSTRAINT [MENUS_fk] FOREIGN KEY([PARENTEID]) REFERENCES [dbo].[MENUS] ([ID]) GO ALTER TABLE [dbo].[MENUS] CHECK CONSTRAINT [MENUS_fk] GO  
      Aqui segue os inserts:
       
      (Nenhum nome de coluna) INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 1, NULL,'Auxiliares', 'Cadastro de auxiliares', '#', '_self', 1,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 2, NULL,'Cursos', 'Cadastro de cursos e editais', '#', '_self', 2,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 3, NULL,'Matricula', 'Cadastro de matrículas', '#', '_self', 3,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 4, NULL,'Seguranca', 'Cadastros de segurança', '#', '_self', 4,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 5, NULL,'Marketing', 'Cadastro de marketing', '#', '_self', 5,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 6, NULL,'Ferramentas', 'Cadastro de ferramentas', '#', '_self', 6,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 7, 1, 'Benefícios', 'Cadastro de benfícios do edital', 'cadBeneficios.aspx', '_self', 1,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 8, 1, 'Cargos', 'Cadastro de cargos', 'cadCargos.aspx', '_self', 1,2); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 9, 1, 'Países', 'Cadastro de países', 'cadPaises.aspx', '_self', 1,3); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 10, 1, 'Estados', 'Cadastro de estados', 'cadEstados.aspx', '_self', 1,4); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 11, 1, 'Macrorregião', 'Cadastro de macrorregiões', 'cadMacroregiao.aspx', '_self', 1,5); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 12, 1, 'Cidades', 'Cadastro de cidades', 'cadCidades.aspx', '_self', 1,6); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 13, 1, 'Escolaridade', 'Cadastro de escolaridades', 'cadEscolaridade.aspx', '_self', 1,7); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 14, 1, 'Estado civil', 'Cadastro de estado civil', 'cadEstadoCivil.aspx', '_self', 1,8); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 15, 1, 'Expectativas', 'cadastro de expectativas', 'cadExpectativas.aspx', '_self', 1,9); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 16, 1, 'Fonte de recursos', 'Cadastro de fontes de recursos', 'cadFonteRecursos.aspx', '_self', 1,10); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 17, 1, 'Lotação', 'Cadastro de lotação', 'cadLotacao.aspx', '_self', 1,11); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 18, 1, 'Modalidades', 'Cadastro de modalidades', 'cadModalidades.aspx', '_self', 1,12); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 19, 2, 'Motivos', 'Cadastro de motivos', 'cadMotivos.aspx', '_self', 2,4); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 20, 1, 'Necessidades especiais', 'Cadastro de necessidades especiais', 'cadNecessidadesEspeciais.aspx', '_self', 1,14); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 21, 1, 'Pré-requisitos', 'Cadastro de pré-requisitos', 'cadPrerrequisitos.aspx', '_self', 1,15); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 22, 1, 'Profissões', 'Cadastro de profissões', 'cadProfissoes.aspx', '_self', 1,16); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 23, 1, 'Projetos', 'Cdastro de projetos', 'cadProjetos.aspx', '_self', 1,17); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 24, 1, 'Setor beneficiado', 'Cdastro de setores beneficiados', 'cadSetorBeneficiado.aspx', '_self', 1,18); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 25, 2, 'Eixos', 'Cadastro de eixos', 'cadEixos.aspx', '_self', 2,1); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 26, 2, 'Cursos', 'Cadastro de cursos', 'cadCursos.aspx', '_self', 2,2); INSERT INTO MENUS (ID, PARENTEID, NOME, DESCRICAO, ARQUIVO, TARGETMENU, NIVEL, ORDENAR) VALUES ( 27, 2, 'Editais', 'Cadastro de editais', 'cadEdital.aspx', '_self', 2,3); Aqui tem o objeto objMenus.vb
       
      Imports System.Data.SqlClient Namespace DETI Public Class objMenu Private Db As classDatabase.DbSql Private Cm As SqlCommand Private Fn As New Funcoes.classFuncao ' DeclaMENUo das variaveis Private vlID As Integer Private vlNOME As String Private vlDESCRICAO As String Private vlARQUIVO As String Private vlTARGETMENU As String Private vlPARENTEID As Integer Private vlNIVEL As Integer Private vlORDENAR As Integer ' DeclaMENUo das propriedades Property ID() Get Return vlID End Get Set(ByVal Value) vlID = Value End Set End Property Property NOME() Get Return vlNOME End Get Set(ByVal Value) vlNOME = Value End Set End Property Property DESCRICAO() Get Return vlDESCRICAO End Get Set(ByVal Value) vlDESCRICAO = Value End Set End Property Property ARQUIVO() Get Return vlARQUIVO End Get Set(ByVal Value) vlARQUIVO = Value End Set End Property Property TARGETMENU() Get Return vlTARGETMENU End Get Set(ByVal Value) vlTARGETMENU = Value End Set End Property Property PARENTEID() Get Return vlPARENTEID End Get Set(ByVal Value) vlPARENTEID = Value End Set End Property Property NIVEL() Get Return vlNIVEL End Get Set(ByVal Value) vlNIVEL = Value End Set End Property Property ORDENAR() Get Return vlORDENAR End Get Set(ByVal Value) vlORDENAR = Value End Set End Property ' DeclaMENUo dos procedimentos Public Function Inserir() Dim pParametro As String = DBNull.Value.ToString If vlPARENTEID > 0 Then pParametro = " AND A.PARENTEID = " & vlPARENTEID Try Cm = New SqlCommand ' Gera o código Db = New classDatabase.DbSql Db.NomeTabela = "MENUS" vlID = Db.Chave("ID") Db = Nothing With Cm.Parameters .AddWithValue("@ID", vlID) If vlPARENTEID > 0 Then .AddWithValue("@PARENTEID", vlPARENTEID) Else .AddWithValue("@PARENTEID", DBNull.Value) .AddWithValue("@NOME", Trim(vlNOME)) If Trim(vlDESCRICAO) <> DBNull.Value.ToString Then .AddWithValue("@DESCRICAO", Trim(vlDESCRICAO)) Else .AddWithValue("@DESCRICAO", DBNull.Value) If Trim(vlARQUIVO) <> DBNull.Value.ToString Then If Right(Trim(vlARQUIVO), 5) <> ".aspx" Then .AddWithValue("@ARQUIVO", Trim(vlARQUIVO) & ".aspx") Else .AddWithValue("@ARQUIVO", Trim(vlARQUIVO)) Else If Trim(vlARQUIVO) = DBNull.Value.ToString Then .AddWithValue("@ARQUIVO", "#") End If End If If Trim(vlTARGETMENU) <> DBNull.Value.ToString Then .AddWithValue("@TARGETMENU", Trim(vlTARGETMENU)) Else .AddWithValue("@TARGETMENU", "_self") .AddWithValue("@NIVEL", vlNIVEL) .AddWithValue("@ORDENAR", vlORDENAR) End With If Busca(" A.NOME = '" & Trim(vlNOME) & "' AND A.ARQUIVO = '" & Trim(vlARQUIVO) & "' " & pParametro) Then Return "REGISTRO JÁ CADASTRADO!" Else ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Db.NomeTabela = "MENUS" Return Db.Salvar(Cm) End If Catch ex As Exception Return "OCORREU UM ERRO AO TENTAR INCLUIR UM NOVO REGISTRO:" & ex.Message Finally Cm = Nothing Db = Nothing End Try End Function Public Function Alterar() As String Dim pParametro As String = DBNull.Value.ToString If vlPARENTEID > 0 Then pParametro = " AND A.PARENTEID = " & vlPARENTEID Try Cm = New SqlCommand With Cm.Parameters If vlPARENTEID > 0 Then .AddWithValue("@PARENTEID", vlPARENTEID) Else .AddWithValue("@PARENTEID", DBNull.Value) .AddWithValue("@NOME", Trim(vlNOME)) If Trim(vlDESCRICAO) <> DBNull.Value.ToString Then .AddWithValue("@DESCRICAO", Trim(vlDESCRICAO)) Else .AddWithValue("@DESCRICAO", DBNull.Value) If Trim(vlARQUIVO) <> DBNull.Value.ToString And Trim(vlARQUIVO) <> "#" And Trim(vlARQUIVO) <> "#.aspx" Then If Right(Trim(vlARQUIVO), 5) <> ".aspx" Then .AddWithValue("@ARQUIVO", Trim(vlARQUIVO) & ".aspx") Else .AddWithValue("@ARQUIVO", Trim(vlARQUIVO)) Else If Trim(vlARQUIVO) = DBNull.Value.ToString Then .AddWithValue("@ARQUIVO", "#") End If End If If Trim(vlTARGETMENU) <> DBNull.Value.ToString Then .AddWithValue("@TARGETMENU", Trim(vlTARGETMENU)) Else .AddWithValue("@TARGETMENU", "_self") .AddWithValue("@NIVEL", vlNIVEL) .AddWithValue("@ORDENAR", vlORDENAR) End With If Busca(" A.ID <> " & vlID & pParametro & " AND A.NOME = '" & Trim(vlNOME) & "' AND A.ARQUIVO = '" & Trim(vlARQUIVO) & "' ") Then Return "REGISTRO JÁ CADASTRADO!" Else ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Db.NomeTabela = "MENUS" Return Db.Salvar(Cm, "ID", vlID) End If Catch ex As Exception Return "Erro:" & ex.Message Finally Cm = Nothing Db = Nothing End Try End Function Public Function Excluir() As String Try ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Db.NomeTabela = "MENUS" Return Db.Excluir("ID", vlID) Catch ex As Exception Return "OCORREU UM ERRO AO TENTAR EXCLUIR ESTE REGISTRO: " & ex.Message Finally Db = Nothing End Try End Function Public Function Consultar(ByVal pParametro As String, ByVal pOrdem As String) As Data.DataSet Dim SQL As New System.Text.StringBuilder SQL.Append(" SELECT A.ID, PARENTEID = ISNULL(A.PARENTEID, 0), A.NOME, A.DESCRICAO, ") SQL.Append(" A.ARQUIVO, A.ORDENAR, ORDEMPARENTE = B.ORDENAR, PARENTE = B.NOME, ") SQL.Append(" CONTAR = ROW_NUMBER() OVER(PARTITION BY A.PARENTEID ORDER BY A.PARENTEID ASC), ") SQL.Append(" LINKARQUIVO = CASE WHEN B.ARQUIVO Is NULL And A.PARENTEID Is NULL THEN '' ") SQL.Append(" WHEN LTRIM(RTRIM(B.ARQUIVO)) IS NULL AND A.PARENTEID IS NULL THEN 'http://localhost:1219/' + A.ARQUIVO ") SQL.Append(" WHEN LTRIM(RTRIM(B.ARQUIVO)) = '' AND A.PARENTEID IS NULL THEN '' ") SQL.Append(" ELSE 'http://localhost:1219/' + ISNULL(B.NOME + '/', '') + ISNULL(A.ARQUIVO, '#') END, ") SQL.Append(" A.TARGETMENU, A.NIVEL, ") SQL.Append(" SELECIONA_TARGET = CASE A.TARGETMENU WHEN '_blank' THEN 'True' ELSE 'False' END, ") SQL.Append(" PARENTE = ISNULL(B.NOME, '') ") SQL.Append(" FROM MENUS A ") SQL.Append(" LEFT JOIN MENUS B ON (B.ID = A.PARENTEID) ") If Trim(pParametro) <> "" Then SQL.Append(" WHERE " & pParametro & "") If Trim(pOrdem) <> "" Then SQL.Append(" ORDER BY " & Trim(pOrdem)) Else SQL.Append(" ORDER BY A.PARENTEID, CONTAR ") Try ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Return Db.Consultar(SQL.ToString) Catch ex As Exception Return Nothing Finally Db = Nothing End Try End Function Public Function ConsultarTopo(ByVal pParametro As String) As Data.DataSet Dim SQL As New System.Text.StringBuilder SQL.Append(" SELECT TOP " & vlID & " ID ") SQL.Append(" FROM MENUS ") If Trim(pParametro) <> "" Then SQL.Append(" WHERE " & pParametro & " ") SQL.Append(" ORDER BY NOME ") Try ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Return Db.Consultar(SQL.ToString) Catch ex As Exception Return Nothing Finally Db = Nothing End Try End Function Public Function ConsultaGenerica(ByVal pSQL As String) As Data.DataSet Dim SQL As New System.Text.StringBuilder SQL.Append(pSQL) Try ' Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Return Db.Consultar(SQL.ToString) Catch ex As Exception Return Nothing Finally Db = Nothing End Try End Function Public Function ExecutaSQLGenerica(ByVal pSQL As String) As String Dim Sql As New System.Text.StringBuilder Sql.Append(pSQL) Try 'Cria uma instância do objeto de conexao com o banco de dados ' e preenche os dados necessarios para realizar as operacoes Db = New classDatabase.DbSql Return Db.ExecutaSql(pSQL) Catch ex As Exception Return Nothing Finally Db = Nothing End Try End Function 'Função para retornar verdadeiro quando estação encontrada Private Function Busca(ByVal pParametro As String) As Boolean Dim Ds As Data.DataSet Ds = Consultar(pParametro, "") If Ds.Tables(0).Rows.Count <> 0 Then Return True Else Return False End If End Function End Class End Namespace  
      Em seguida, a página HTML:
       
      <%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="inicio_MasterPage" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="../bootstrap/js/bootstrap.min.js"></script> <script src="../bootstrap/js/jquery.3.6.0.min.js"></script> <script src="../Scripts/ckeditor/ckeditor.js"></script> <link href="../bootstrap/css/bootstrap.css" rel="stylesheet" /> <link href="../bootstrap/meuMenu.css" rel="stylesheet" /> <link href="../bootstrap/css/panel-tabs.css" rel="stylesheet" /> <link href="../bootstrap/css/meu-menu.css" rel="stylesheet" /> <link href="../Scripts/ckeditor/contents.css" rel="stylesheet" /> <script src="../CPF_CNPJ.js"></script> <script src="../Funcoes.js"></script> <style> .cssUsuario { background-color:transparent; background-image:url("../bootstrap/images/user.svg"); background-position:left; background-repeat:no-repeat; padding-left:22px; text-align:left; height:20px; width:auto; border:0px none; border-collapse:collapse; cursor:pointer; } .cssFilial { background-color:transparent; background-image:url("../bootstrap/images/filial.svg"); background-position:left; background-repeat:no-repeat; padding-left:22px; text-align:left; height:20px; width:auto; border:0px none; border-collapse:collapse; cursor:pointer; } .cssEmail { background-color:transparent; background-image:url("../bootstrap/images/email.svg"); background-position:left; background-repeat:no-repeat; padding-left:22px; text-align:left; height:20px; width:auto; border:0px none; border-collapse:collapse; cursor:pointer; } .visible { display:block; } .invisible { display:none; } </style> <asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div><asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True"></asp:ScriptManager></div> <div> <ajaxToolkit:ModalPopupExtender ID="mpeFilial" runat="server" PopupControlID="panTrocaFilial" BackgroundCssClass="ajaxModal" TargetControlID="BtnTrocaFilialOculto" CancelControlID="BtnCancela" DropShadow="true"> </ajaxToolkit:ModalPopupExtender> </div> <div style="display:none;"> <asp:Button ID="BtnTrocaFilialOculto" runat="server" Text="Confirma" /> </div> <div> <asp:Panel ID="panTrocaFilial" runat="server" CssClass="alert alert-info" style="padding:10px !important; display:none;" > <div class="row"> <div class="col-sm-12"> <div><h5>TROCA DE FILIAL</h5></div> <div> <asp:UpdatePanel ID="upLbFiliais" runat="server"> <ContentTemplate> <asp:ListBox ID="lbFiliais" runat="server" CssClass="form-control small" DataTextField="FANTASIA" DataValueField="ID" style="height:200px !important;"></asp:ListBox> </ContentTemplate> </asp:UpdatePanel> </div> <div style="margin-top:10px;"> <div class="row"> <div class="col-sm-6"> <asp:UpdatePanel ID="upConfirmaTrocaUser" runat="server"> <ContentTemplate> <asp:Button ID="BtnConfirma" runat="server" CssClass="btn btn-success small" style="margin-right:5px;" Text="Confirma" /> </ContentTemplate> </asp:UpdatePanel> </div> <div class="col-sm-6"> <asp:Button ID="BtnCancela" runat="server" CssClass="btn btn-secondary small" style="margin-right:5px;" Text="Cancela" /> </div> </div> </div> </div> </div> </asp:Panel> </div> <div class="container-fluid"> <div class="row" style="background-color:greenyellow !important;"> <div class="col-sm-12"> <h3>Início</h3> </div> </div> <div class="row" style="background-color:greenyellow !important;"> <div class="col-sm-12"> <div> <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" RenderingMode="List" CssClass="navbar-nav mr-auto" StaticMenuItemStyle-CssClass="nav-item" > <DynamicHoverStyle CssClass="dropdown-menu" /> <DynamicMenuItemStyle CssClass="dropdown-item" VerticalPadding="5px" /> <DynamicMenuStyle CssClass="dropdown-menu" VerticalPadding="5px" /> <StaticHoverStyle CssClass="dropdown-menu" /> <StaticMenuItemStyle CssClass="dropdown-item" VerticalPadding="5px" ></StaticMenuItemStyle> </asp:Menu> </div> </div> </div> <div class="row" style="margin-bottom:20px !important; padding-bottom:10px; background-color:greenyellow;"> <div class="col-sm-4"> <asp:UpdatePanel ID="upUsuarioLogado" runat="server"> <ContentTemplate> <asp:Button ID="mpBtnUsuario" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </div> <div class="col-sm-4"> <asp:UpdatePanel ID="upFilialLogado" runat="server"> <ContentTemplate> <asp:Button ID="mpBtnFilial" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </div> <div class="col-sm-4"> <asp:UpdatePanel ID="upEmailLogado" runat="server"> <ContentTemplate> <asp:Button ID="mpBtnEmail" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </div> </div> <div class="row"> <div class="col-sm-12"> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder> </div> </div> </div> </form> </body> </html>  
      E, finalmente, o código VB 
       
      Imports System.Data Imports System.Data.DataSet Imports System.Data.SqlClient Imports System.Linq Imports System.IO Imports System.Collections.Generic Imports System.Web.UI Imports System.Web.UI.Control Partial Class inicio_MasterPage Inherits System.Web.UI.MasterPage Private Menu As New DETI.objMenu Private MenuPerfil As New DETI.objPerfisMenus Private Menus As DataTable = New DataTable() Private Usuario As New DETI.objUsuarios Private Fn As New Funcoes.classFuncao Private Sub getMenu() Dim Ds As DataSet = New DataSet() Dim dt As DataTable = New DataTable() Dim pItem As Integer = 0 'Ds = Menu.Consultar(" A.ID IN (SELECT X.MENUID FROM PERFISMENUS X WHERE X.PERFILID = " & Session("sPerfilID") & ") ", "") Ds = Menu.Consultar("", "") Menu1.Items.Add(New MenuItem("<span style='padding:1px 5px 1px 5px;'>Home</span>", 0, "", Fn.PegaDominioDaAplicacao & "/inicio/index.aspx")) If Not ds Is Nothing Then If ds.Tables(0).Rows.Count > 0 Then dt = ds.Tables(0) Dim drowpar As DataRow() = dt.[Select]("PARENTEID = " & 0) For Each dr As DataRow In drowpar Menu1.Items.Add(New MenuItem("<span style='padding:1px 5px 1px 5px;'>" & dr("NOME").ToString() & "</span>", dr("ID").ToString(), "", dr("LINKARQUIVO").ToString())) pItem = dr("ID") Next For Each dr As DataRow In dt.[Select]("PARENTEID > " & 0) Dim mnu As MenuItem = New MenuItem("<span style='padding:1px 5px 1px 5px;'>" & dr("NOME").ToString() & "</span>", dr("ID").ToString(), "", dr("LINKARQUIVO").ToString()) Menu1.FindItem(dr("NIVEL").ToString()).ChildItems.Add(mnu) Next If pItem > 0 Then pItem = pItem + 1 End If End If Menu1.Items.Add(New MenuItem("<span style='padding:5px;'>Sair</span>", pItem, "", Fn.PegaDominioDaAplicacao & "/index.aspx")) End Sub Private Sub IdentificaUsuario() Dim Ds As Data.DataSet Ds = Usuario.ConsultaGenerica(" SELECT A.USUARIOID, B.LOGIN, B.EMAIL, C.FANTASIA " & " FROM USUARIOSFILIAIS A " & " INNER JOIN USUARIOS B ON (B.ID = A.USUARIOID) " & " INNER JOIN FILIAL C ON (C.ID = A.FILIALID) " & " WHERE A.USUARIOID = " & Session("sUsuario") & " AND A.FILIALID = " & Session("sFilial") & " AND B.PERFILID = " & Session("sPerfilID")) mpBtnUsuario.Text = "" If Not Ds Is Nothing Then If Ds.Tables(0).Rows.Count > 0 Then mpBtnUsuario.CssClass = "cssUsuario visible" mpBtnUsuario.Text = Ds.Tables(0).Rows(0)("LOGIN") mpBtnFilial.CssClass = "cssFilial visible" mpBtnFilial.Text = Ds.Tables(0).Rows(0)("FANTASIA") mpBtnEmail.CssClass = "cssEmail visible" mpBtnEmail.Text = Ds.Tables(0).Rows(0)("EMAIL") getMenu() Else If Ds.Tables(0).Rows.Count = 0 Then mpBtnUsuario.CssClass = "invisible" mpBtnFilial.CssClass = "invisible" mpBtnEmail.CssClass = "invisible" Response.Redirect("../index.aspx") End If End If Else If Ds Is Nothing Then Response.Redirect("../index.aspx") End If End If End Sub Private Sub inico_MasterPage_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then If Session("sUsuario") Is Nothing Then Response.Redirect("../index.aspx") Else If Not Session("sUsuario") Is Nothing Then If Session("sUsuario") > 0 Then IdentificaUsuario() Else If Session("sUsuario") = 0 Then Response.Redirect("../index.aspx") End If End If End If End If End If End Sub Protected Sub mpBtnFilial_Click(sender As Object, e As EventArgs) Handles mpBtnFilial.Click Dim Ds As Data.DataSet Ds = Usuario.ConsultaGenerica(" SELECT B.ID, B.FANTASIA " & " FROM USUARIOSFILIAIS A " & " INNER JOIN FILIAL B ON (B.ID = A.FILIALID) " & " WHERE B.ATIVO = 'True' " & " AND A.USUARIOID = " & Session("sUsuario")) lbFiliais.DataSource = Ds lbFiliais.DataBind() If Not Ds Is Nothing Then If Ds.Tables(0).Rows.Count > 0 Then mpeFilial.Show() End If End If End Sub Protected Sub BtnConfirma_Click(sender As Object, e As EventArgs) Handles BtnConfirma.Click If lbFiliais.SelectedIndex > -1 Then Session("sFilial") = lbFiliais.SelectedValue Usuario.ExecutaSQLGenerica(" UPDATE USUARIOS " & " SET ULTIMOFILIALID = " & lbFiliais.SelectedValue & " WHERE ID = " & Session("sUsuario")) IdentificaUsuario() mpeFilial.Hide() Else If lbFiliais.SelectedIndex = -1 Then End If End If End Sub End Class  
      Desde já agradeço a atenção.
       
      Obrigado,
       
      Ilano.
       
    • Por TheLord23
      ESTOU COMEÇANDO AGORA NA PROGRAMAÇÃO COM VISUALG E TERIA QUE COLOCAR ESTE CODIGO EM UM LAÇO DE REPETIÇÃO.
      POREM NÃO ESTOU CONSEGUINDO PODERIAM ME AJUDAR ?
       
      SÓ PENSANDO QUE O USUÁRIO IRA DIGITAR O TAMANHO DO VETOR, APOS ISSO CADA OPÇÃO QUE ELE ESCOLHER E ELA SER EXECUTADA DE FORMA CORRETA ELE VOLTARA PARA O MEUNU PRINCIPAL DAS OPÇÕES ATE QUE ELE SELECIONE A OPÇÃO "F"
       
      POREM TENTEI ESCREVELO USANDO ENQUANTO MAS ACABOU QUE EU NÃO CONSIGO PREVINIR OS ERROS DO USUÁRIO QUANDO ELE COLOCA AS INFORMAÇÕES
       
      TIPO:
      -ARMAZENAR UM NÚMERO NO VETOR E ESSE NÚMERO NÃO SER SOBRESCREVIDO ATE QUE O PROGRAMA SEJA ENCERRADO
      -SE ELE DIGITAR PRA BUSCAR OU INSERIR O NÚMERO ZERO O PROGRAMA INFORMAR QUE O VALOR É INVÁLIDO
       
      TENTEI USAR PROCEDIMENTOS E FUNÇÕES MAS OS ERROS CONTINUARAM.
       
       
       
      Algoritmo "DESAFIO"
      Var
         AUX,CONTADOR,BUSCAR:INTEIRO
         POSICAO,AUX_TEMP:INTEIRO
         OPCAO:CARACTERE
         RESULT_BUSCA: LOGICO
         SOMA_VET:REAL
         NUMERO:VETOR[1..500]DE INTEIRO
      Inicio
         ESCREVAL("*********************************")
         ESCREVAL("* CADASTRO DE VETORES - DESAFIO *")
         ESCREVAL("*********************************")
         ESCREVA("DIGITE O TAMANHO DO VETOR A SER CADASTRADO: ")
         LEIA(AUX)
         NUMERO[AUX] <- AUX
         ESCREVAL("A - Cadastrar um novo número;")
         ESCREVAL("B - Buscar um número")
         ESCREVAL("C - Excluir um número;")
         ESCREVAL("D - Listar os números cadastrados;")
         ESCREVAL("E - Exibir a soma dos números do vetor;")
         ESCREVAL("F - Sair do sistema.")
         LEIA(OPCAO)
         OPCAO <- MAIUSC(OPCAO)
         ESCOLHA OPCAO
         CASO "A"
            PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
               ESCREVA("DIGITE O VALOR QUE SERÁ ARMAZENADO NA",CONTADOR,"ª POSIÇÃO DO VETOR: ")
               LEIA(NUMERO[CONTADOR])
            FIMPARA
         CASO "B"
            ESCREVA("QUAL NÚMERO DESEJA ENCONTRAR: ")
            LEIA(BUSCAR)
            PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
               SE NUMERO[CONTADOR] = BUSCAR ENTAO
                  RESULT_BUSCA <- VERDADEIRO
                  POSICAO <- CONTADOR
               FIMSE
            FIMPARA
            PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
               ESCREVAL(NUMERO[CONTADOR])
            FIMPARA
            ESCREVAL("")
            ESCREVAL("---------")
            SE RESULT_BUSCA = VERDADEIRO ENTAO
               ESCREVAL("O NÚMERO",BUSCAR,"FOI ENCONTRADO E ESTA NA POSIÇÃO",POSICAO)
            SENAO
               ESCREVAL("O NÚMERO NÃO FOI ENCONTRADO !")
            FIMSE
         CASO "C"
            escreval("QUAL NÚMERO DESEJA EXCLUIR DO VETOR: ")
            leia(BUSCAR)
            SE NUMERO[CONTADOR] = BUSCAR ENTAO
               NUMERO[CONTADOR] <- 0
               ESCREVAL("O NÚMERO",BUSCAR,"NA POSIÇÃO",POSICAO,"DO VETOR FOI EXCLUIDO !")
            FIMSE
            PARA CONTADOR DE 1 ATE NUMERO[AUX]
               PARA AUX DE CONTADOR + 1 ATE AUX FACA
                  SE NUMERO[AUX] > NUMERO[CONTADOR]
                     AUX_TEMP <- NUMERO[AUX]
                     NUMERO[AUX] <- NUMERO[CONTADOR]
                     NUMERO[CONTADOR] <- AUX_TEMP
                  FIMPARA
               FIMPARA
               ESCREVA("VALROES DO VETOR: ")
               PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
                  ESCREVAL(NUMERO[CONTADOR])
               FIMPARA
            CASO "D"
               ESCREVA("VALORES DO VETOR: ")
               PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
                  ESCREVAL(NUMERO[CONTADOR])
               FIMPARA
            CASO "E"
               PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
                  SOMA_VET <- SOMA_VET + NUMERO[CONTADOR]]
               FIMPARA
               ESCREVAL("")
               ESCREVA("A SOMA DO VETOR É:",SOMA_VET)
               
            CASO "F"
               ESCREVAL("ENCERRANDO SISTEMA...")
            OUTROCASO
               ESCREVAL("OPÇÃO INVÁLIDA !")
            FIMESCOLHA
      Fimalgoritmo
    • Por thiago_tw
      eu to com uma tarefa que preciso de ajuda, já tentei alguns algoritmos que achei por aqui mas nunca dá certo, mandei a imagem do que é para ser feito, agradecido se me ajudarem

×

Informação importante

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