Pessoal como eu faço para popular meu datatable e pegar o indice da linha?

Exibições: 67

Respostas a este tópico

SqlConnection connection = new SqlConnection(Variaveis.connString);
SqlCommand command = new SqlCommand(queryString, connection);
SqlDataAdapter ddlDA = new SqlDataAdapter(command);
DataTable ddlDT = new DataTable();

connection = new SqlConnection(Variaveis.connString);
queryString = "select id, nome from xtabela ";
command = new SqlCommand(queryString, connection);
ddlDA = new SqlDataAdapter(command);
ddlDT = new DataTable();
ddlDA.Fill(ddlDT);
ddlist.DataTextField = "nome";
ddlist.DataValueField = "id";
ddlist.DataSource = ddlDT;
ddlist.DataBind();
ddlist.Items.Insert(0, new ListItem("Escolha...", "0"));
connection.Close();

Boa Tarde Jorge.

Então colega, eu estou com o seguinte problema, já tentei criar um contador para "pegar" o índice da linha da planilha, entretanto, ao compilar minha aplicação, o log apresentado não vem correto, por exemplo Maria Silva pertence a linha da coluna G da linha 45, porém ao compilar o meu log mostra que a Maria Silva pertence a linha 6, sendo que não.

O log deveria aparecer dessa forma:

Log de Importação:

O interessado informado na linha 13 foi adicionado novamente ao processo 0000112-75.2016.8.08.0012 
O interessado informado na linha 54 foi adicionado novamente ao processo 0000349-28.2017.8.08.0060 
O interessado informado na linha 161 foi adicionado novamente ao processo 0000525-07.2015.8.08.0018 
O interessado informado na linha 298 foi adicionado novamente ao processo 0001144-35.2014.8.08.0029 
O interessado informado na linha 386 foi adicionado novamente ao processo 0000051-63.2017.8.08.0051 
O interessado informado na linha 421 foi adicionado novamente ao processo 0001243-80.2016.8.08.0046 
O interessado informado na linha 422 foi adicionado novamente ao processo 0001246-35.2016.8.08.0046 

Porém está gerando assim:

Log de Importação:

O interessado SIMONE MARTINS TEIXEIRA, informado na linha 13 foi adicionado novamente ao processo 0000112-75.2016.8.08.0012 
O interessado REGINA DE CASTRO BORGES ABREU, informado na linha 6 foi adicionado novamente ao processo 0000051-63.2017.8.08.0051 

Esse é meu código:

private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int i, Usuario usuarioLogado)
{
//usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login);
i = 4;
Action<object> processamento = (dados) =>
{
/*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/
NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

/*try
{
loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
}
catch (Exception ex)
{
loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
}*/
/*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

var processo = aplProcesso.consultarPorNProcessoER(lista.ItemArray[1].ToString());*/

//Teste para buscar o indice.
//foreach( var linha in ( (IEnumerable<DataRow>)dados ).Skip( 5 ) )
//{

foreach (var linha in (IEnumerable<DataRow>)dados)
{

i++;
List<Processo> listaProcessoExistente = new List<Processo>();
Processo processo = null;
Interessado interessado = new Interessado();

//busca o processo pelo nº judicial anterior ou atual
if (!linha.ItemArray[1].ToString().Equals(""))
processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[1].ToString());
if (processo == null)
{
if (!linha.ItemArray[2].ToString().Equals(""))
processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[2].ToString());
}

//busca o interessado por cpf/cnpj
if (linha.ItemArray[7].ToString().Length == 14)
interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

if (linha.ItemArray[7].ToString().Length == 18)
interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));
if (processo != null)
{
//se o processo não for nulo busco todos procinter relacionados a ele
List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
if (listaprocinter.Exists(o => o.Interessado == interessado))
log.Append("O interessado " + processo.Interessado.Nome + ", informado na linha " + (i + 1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
//log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
// log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
setProcInter(processo, interessado, linha, i);
}

else
{
//Novo Processo - 6.3
processo = new Processo();
processo.Interessado = interessado;
processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
processo.RenunciaCredito = "N";
processo.Situacao = new AplSituacao().ConsultarPorId(1);
processo.HonorarioDativo = "S";
processo.Reclamado = new AplReclamado().buscaItem(2);
processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
processo.TipoProcesso = "O";
if (linha.ItemArray[5].ToString().Contains("juizado"))
processo.Tribunal = new AplTribunal().buscaItem(71);
else
processo.Tribunal = new AplTribunal().buscaItem(3);
processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

VaraExecucao vara = new VaraExecucao();
if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
{
List<VaraExecucao> listaVaraComarca = aplVaraExecucao.ConsultarPorNomeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
if (listaVaraComarca.Count != 0)
{
if (linha.ItemArray[4].ToString().Equals(""))
{
vara = listaVaraComarca.Find(o => o.NumeroVara == null);
}
else
{
vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
}
}
}
if (vara != null && vara.Codigo != 0)
{
processo.VaraExecucao = vara;
}
aplProcesso.gravar(processo);
//aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
aplLog.LogarAtividade(usuarioLogado, "Importação do processo de número judicial: " + processo.NumProcessoJudicial
+ ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
+ processo.Tribunal.NomeTribunal + ".", DateTime.Now);
//log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

setProcInter(processo, interessado, linha, i);
}


}//Fim Foreach

}

}

}



Jorge E. Hime Somers disse:

SqlConnection connection = new SqlConnection(Variaveis.connString);
SqlCommand command = new SqlCommand(queryString, connection);
SqlDataAdapter ddlDA = new SqlDataAdapter(command);
DataTable ddlDT = new DataTable();

connection = new SqlConnection(Variaveis.connString);
queryString = "select id, nome from xtabela ";
command = new SqlCommand(queryString, connection);
ddlDA = new SqlDataAdapter(command);
ddlDT = new DataTable();
ddlDA.Fill(ddlDT);
ddlist.DataTextField = "nome";
ddlist.DataValueField = "id";
ddlist.DataSource = ddlDT;
ddlist.DataBind();
ddlist.Items.Insert(0, new ListItem("Escolha...", "0"));
connection.Close();

Como estou trabalhando com o foreach e DataRow, como eu passaria para pegar o indice?

Jorge E. Hime Somers disse:

SqlConnection connection = new SqlConnection(Variaveis.connString);
SqlCommand command = new SqlCommand(queryString, connection);
SqlDataAdapter ddlDA = new SqlDataAdapter(command);
DataTable ddlDT = new DataTable();

connection = new SqlConnection(Variaveis.connString);
queryString = "select id, nome from xtabela ";
command = new SqlCommand(queryString, connection);
ddlDA = new SqlDataAdapter(command);
ddlDT = new DataTable();
ddlDA.Fill(ddlDT);
ddlist.DataTextField = "nome";
ddlist.DataValueField = "id";
ddlist.DataSource = ddlDT;
ddlist.DataBind();
ddlist.Items.Insert(0, new ListItem("Escolha...", "0"));
connection.Close();

Ops..

Você não havia mencionado sobre a origem de dados ser uma planilha...

No meu código ficou faltando um dado que é o Record number..

Mas de qq jeito isso não resolve o seu problema.

Precisa ver a comunicação de dados com a planilha.. Veja no stackoverflow...

Amanha dou uma olhada la

Então Jorge, rapaz estou apanhando nisso ainda, já olhei lá, tentei aplicar algumas dicas em códigos que outros colegas lá estavam com problemas, mas no meu não funcionou. Se puder me ajudar, antes usava um for e pegava os indices corretos, por melhorias do sistemas, em termos de performances, acabei que fui obrigado a trabalhar com o DataRow e foreach, como dentro do foreach já declarei a linha, queria ver alguma maneira de aproveitar para pegar o indice da linha, fiz contadores, mas não funcionou.

Jorge E. Hime Somers disse:

Ops..

Você não havia mencionado sobre a origem de dados ser uma planilha...

No meu código ficou faltando um dado que é o Record number..

Mas de qq jeito isso não resolve o seu problema.

Precisa ver a comunicação de dados com a planilha.. Veja no stackoverflow...

Amanha dou uma olhada la

RSS

© 2018   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço