Duvida If / Else
Pessoal estou fazendo uma tabela via string com concatenação.
Mas percebi, que algumas condições, estão sendo ignoradas, veja o trecho do código.
Em uma parte do código ele ignora meu if e vai direto para o else.
Obridado Galera
Mas percebi, que algumas condições, estão sendo ignoradas, veja o trecho do código.
Em uma parte do código ele ignora meu if e vai direto para o else.
else if (id_projeto == 2)
{
var drOcorrencias = clsLojas.retornaQuery("SELECT * FROM OCORRENCIAS where id_loja=" + id_loja + "");
if (drOcorrencias == null) //ESSE IF E IGNORADO E VAI DIRETO PARA O ELSE, O QUE DEVO ESTAR FAZENDO DE ERRADO..
{
tablestring2 = tablestring2 + "<table align='center' border='1' bordercolor='#666666' bordercolordark='#000000' width='100%' style='font-size:12px'>";
var drItens = clsLojas.retornaQuery("SELECT * FROM ITENS where id_projeto = 2 and id_canal = " + id_canal + " order by id_item");
while (drItens.Read())
{
tablestring2 = tablestring2 + "<tr bgcolor=\"\" onMouseOver=\"javascript:this.style.backgroundColor='#FFCC66';\" onMouseOut=\"javascript:this.style.backgroundColor='';\">";
tablestring2 = tablestring2 + "<td style='padding:25px;'> " + drItens["ds_item"] + "</td>";
tablestring2 = tablestring2 + "<td>";
tablestring2 = tablestring2 + "<table width='100%' border='0'>";
var drResp = clsLojas.retornaQuery("SELECT * FROM RESP_2 where id_item = " + drItens["id_item"].ToString().Trim() + " and id_subitem = 0 and id_loja = " + id_loja.ToString().Trim() + " ");
while (drResp.Read())
{
tablestring2 = tablestring2 + "<tr><td colspan='2' style='text-align:center;'>";
tablestring2 = tablestring2 + "<hr />";
tablestring2 = tablestring2 + " " + drResp["subresp"] + " ";
tablestring2 = tablestring2 + "<hr />";
//obs = (string)drResp["obs"];
}
tablestring2 = tablestring2 + "</td></tr>";
var drSubItens = clsLojas.retornaQuery("SELECT * FROM subitens where id_item = " + drItens["id_item"].ToString().Trim() + " AND ID_SUBITEM IN (SELECT ID_SUBITEM FROM UNI_TB_RESP_2 where id_item = " + drItens["id_item"] + " and id_loja = " + id_loja + " AND SUBRESP <> '') order by id_subitem");
while (drSubItens.Read())
{
tablestring2 = tablestring2 + "<tr><td style='text-align:center;'><hr />";
if (drSubItens["tipo"].ToString().Trim() == "D" || drSubItens["tipo"].ToString().Trim() == "N" || drSubItens["tipo"].ToString().Trim() == "I" || drSubItens["tipo"].ToString().Trim() == "S" ||
drSubItens["tipo"].ToString().Trim() == "")
{
tablestring2 = tablestring2 + " " + drSubItens["ds_subitem"] + ":";
}
var drResp2 = clsLojas.retornaQuery("SELECT * FROM RESP_2 where id_item = " + drItens["id_item"].ToString().Trim() + " and id_subitem = " + drSubItens["id_subitem"].ToString().Trim() + " and id_loja = " + id_loja + " ");
while (drResp2.Read())
{
tablestring2 = tablestring2 + " " + drResp2["subresp"] + " ";
//drResp2["obs"].ToString();
drResp2.Close();
}
tablestring2 = tablestring2 + " </td></tr>";
tablestring2 = tablestring2 + "<tr><td colspan='2'><hr /></td></tr>";
}
drItens.Close();
drResp.Close();
drSubItens.Close();
tablestring2 = tablestring2 + "</td></tr>";
tablestring2 = tablestring2 + "</table>";
divRelatorio.InnerHtml = tablestring2;
}
}
else
{
while (drOcorrencias.Read())
{
tablestring2 = tablestring2 + "<table align='center' border='1' bordercolor='#666666' bordercolordark='#000000' width='100%' style='font-size:12px'>";
tablestring2 = tablestring2 + "<tr><td align='center'><font color='red'><strong>OCORRENCIA</strong></font></td></tr>";
tablestring2 = tablestring2 + "<tr><td align='center'> <br />" + drOcorrencias["obs"] + "<br /> </td></tr>";
tablestring2 = tablestring2 + "<tr><td align='center'>Responsável: " + drOcorrencias["responsavel"] + "</td></tr>";
tablestring2 = tablestring2 + "</table>";
divRelatorio.InnerHtml = tablestring2;
}
}
drOcorrencias.Close();
}
Obridado Galera
Rodrigolima
Curtidas 0
Respostas
Pjava
27/08/2013
É bem provável que ocorrencia não esteja null. Coloque um Break Point antes do IF e teste a variável ocorrência e veja se tem algo. Lembrando que vazia ("") não é NULL.
GOSTEI 0
Tiago
27/08/2013
Recomendo utilizar o Debug e verifique o valor atual do objeto... bem lembrado pjava, acredito que resolve.
GOSTEI 0
Rodrigolima
27/08/2013
Isso mesmo amigo, resolvi fazendo essa decisão
if (drOcorrencias.HasRows == false)
{
}
obrigado amigos.
if (drOcorrencias.HasRows == false)
{
}
obrigado amigos.
GOSTEI 0
Tiago
27/08/2013
Por nada Rodrigo, boa sorte na programação ai!
GOSTEI 0
Clayton Silva
27/08/2013
Isso mesmo amigo, resolvi fazendo essa decisão
if (drOcorrencias.HasRows == false)
{
}
if (drOcorrencias.HasRows == false)
{
}
if já procura o resultado boolean, não precisa fazer esta comparação.
if (drOcorrencias.HasRows)
já resolve, caso queria negativo use uma exclamação antes.
if (!drOcorrencias.HasRows)
GOSTEI 0
Rodrigolima
27/08/2013
Obrigado amigo mas uma vez, todo dia eu aprendendo, mais uma.
Fiz dessa maneira, uma pratica mais correta.
Obrigado.
Fiz dessa maneira, uma pratica mais correta.
Obrigado.
GOSTEI 0
Clayton Silva
27/08/2013
Obrigado amigo mas uma vez, todo dia eu aprendendo, mais uma.
Fiz dessa maneira, uma pratica mais correta.
Obrigado.
Fiz dessa maneira, uma pratica mais correta.
Obrigado.
Tentamos ajudar sempre, mais umas dicas que vi em seu código.
comece a usar parâmetros, evite concatenar strings nas querys pois deixa o código propenso a invasão.
Evite concatenar strings usando +, é um procedimento que gasta muita memória e usado várias vezes, como em seu código, não é recomendado. Para isto use um stringbuilder.
GOSTEI 0
Tiago
27/08/2013
Tentamos ajudar sempre, mais umas dicas que vi em seu código.
comece a usar parâmetros, evite concatenar strings nas querys pois deixa o código propenso a invasão.
Evite concatenar strings usando +, é um procedimento que gasta muita memória e usado várias vezes, como em seu código, não é recomendado. Para isto use um stringbuilder.
Essa observação é muito importante, afinal usar parâmetros é uma boa prática e evita erros de SQLINJECTION... concatenar strings é uma má prática, se bem que ainda vemos em exemplos de faculdade ou coisa e tipo... mas de como não fazer hehe.
GOSTEI 0
Joel Rodrigues
27/08/2013
Como a dúvida foi resolvida, estou marcando o tópico como Concluído.
GOSTEI 0
Rodrigolima
27/08/2013
Pessoal usei fiz update no meu codigo, usei paramentros e o StringBuilder sb = new StringBuider();
Obrigado Pessoal
Obrigado Pessoal
GOSTEI 0
Clayton Silva
27/08/2013
Pessoal usei fiz update no meu codigo, usei paramentros e o StringBuilder sb = new StringBuider();
Obrigado Pessoal
Obrigado Pessoal
Meus parabéns.
GOSTEI 0
Rodrigo Odasaki
27/08/2013
else if (id_projeto == 2)
Coloca um enum, seu código ficara mais entendível.
Coloca um enum, seu código ficara mais entendível.
GOSTEI 0