Array
(
)

Duvida If / Else

Rodrigolima
   - 27 ago 2013

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.

#Código

 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

Pjava
   - 27 ago 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.

0
|
0

Tiago
|
MVP
Pontos: 120
    27 ago 2013

Recomendo utilizar o Debug e verifique o valor atual do objeto... bem lembrado pjava, acredito que resolve.

0
|
0

Rodrigolima
   - 27 ago 2013

Isso mesmo amigo, resolvi fazendo essa decisão
if (drOcorrencias.HasRows == false)
{

}

obrigado amigos.

0
|
0

Tiago
|
MVP
Pontos: 120
    28 ago 2013

Por nada Rodrigo, boa sorte na programação ai!

0
|
0

Clayton
   - 28 ago 2013


Citação:
Isso mesmo amigo, resolvi fazendo essa decisão
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)

0
|
0

Rodrigolima
   - 28 ago 2013

Obrigado amigo mas uma vez, todo dia eu aprendendo, mais uma.
Fiz dessa maneira, uma pratica mais correta.

Obrigado.

0
|
0

Clayton
   - 28 ago 2013


Citação:
Obrigado amigo mas uma vez, todo dia eu aprendendo, mais uma.
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.

0
|
0

Tiago
|
MVP
Pontos: 120
    28 ago 2013


Citação:

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.

0
|
0

Joel Rodrigues
   - 28 ago 2013

Como a dúvida foi resolvida, estou marcando o tópico como Concluído.

0
|
0

Rodrigolima
   - 10 set 2013

Pessoal usei fiz update no meu codigo, usei paramentros e o StringBuilder sb = new StringBuider();
Obrigado Pessoal

0
|
0

Clayton
   - 10 set 2013


Citação:
Pessoal usei fiz update no meu codigo, usei paramentros e o StringBuilder sb = new StringBuider();
Obrigado Pessoal


Meus parabéns.

0
|
0

Rodrigo Odasaki
   - 10 set 2013

else if (id_projeto == 2)

Coloca um enum, seu código ficara mais entendível.

0
|
0