none
Duvida com Asp.Net C# RRS feed

  • Pergunta

  • Bom dia Comunidade!

    Eu sei que é algo simples de se fazer, mas não estou conseguindo pensar direito e gostaria de uma ajuda de vocês, estou desenvolvendo meu TCC e não estou conseguindo achar a melhor forma para resolver um problema.

    Tenho um formulário onde vou ter que:

    digitar o CPF de tal pessoa e quando eu clicar no botão de busca, ele me traga no formulário o nome e o código da pessoa cadastrada no banco, se não existir da uma mensagem. Algo simples, mas não estou conseguindo fazer funcionar, alguém pode ajudar.

    Esse nome e o codigo que ele vai trazer pode ser em um label ou textbox, mas a consulta é feita via CPF, pois é um campo que não tem como se repetir no banco de dados.

    Outra dúvida, preciso entender um pouco mais sobre sessões... alguem sabe onde encontro um tutorialzinho de fácil compreensão?

    Desde já agradeço galera!


    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    terça-feira, 8 de maio de 2012 13:26

Respostas

  • Opa alex tranquilo, se ajudar..

    txtnome.Text = ds.Tables[0].Rows[0]["NOME"].ToString();

    Explicação: É mais facil vc entender o DataSet fazendo analogia à um vetor de planilhas (tipo as planilhas do Excel), com linhas e colunas onde colunas são os campos e as linhas são os registros.

    No exemplo acima:

    Tables[0] = Tabela no indice 0, ou seja vc pode ter varias tabelas.

    Rows[0] = Linha no indice 0, ou seja vc pode ter varias linhas.

    ["NOME"] = Coluna desejada, no caso NOME. (Não é case sensitive).


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::. Marco Aurélio Ferdinando Jr.

    • Marcado como Resposta Alex T. Leme quarta-feira, 9 de maio de 2012 12:12
    terça-feira, 8 de maio de 2012 20:49
  • Olá Alex, segue um tuto simples sobre Sessions: http://www.fernandoalencar.eti.br/archives/tag/session

    Não sei qual a sua dúvida em Sessions, mas a sua utilização é igual a de uma variavel, porém sem necessidade  de instaciar antes ou definir um tipo para ela. Estou falando apenas do modo de utiliza-la hein! Não é uma variável!

    Vc precisa dar um nome a esta session que irá criar e para pegar o valor basta utilizar o mesmo nome. Vc pode resgatar esse mesmo valor em outra página sem nenhum código adicional, basta ter certeza de ela foi populada na página anterior.

    Cuidado com as abas dos browsers, se vc abrir duas abas, vc estará utilizando o contexto de conexão, ou seja, a mesma session na memória do servidor, ou seja, ela estará sempre sendo substituida pelo ultimo valor, ou pela ultima aba aberta.

    Boa Sorte com o TCC!


    Marco Aurélio Ferdinando Jr.

    • Marcado como Resposta Alex T. Leme terça-feira, 8 de maio de 2012 14:32
    terça-feira, 8 de maio de 2012 14:25

Todas as Respostas

  • Posta aqui o que você já fez e onde está o problema, isso é simples, já fez a conexão com o BD? Já tá conseguindo executar as consultas pelo código?

    thiagokoelho

    terça-feira, 8 de maio de 2012 14:05
  • Fiz isso até agora!

    erro ainda não deu... pois ainda não consegui montar a lógica completa para testar! da hora q eu postei a dúvida, não consegui mexer muito mais no projeto, estou no trabalho agora!

    protected void btnBuscaUser_Click(object sender, EventArgs e) { SqlConnection mConexaoSQL = new SqlConnection(Convert.ToString(Application["ConexaoDBProSaude"])); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); da.Fill(ds); if (validaCPF.VALIDA_CPF(txtCPF.Text.Trim())) { if("aqui quero verificar se o cpf existe no banco, se existir") {

    eu peço pra ele trazer o nome e o codigo desse usuário nos texbox ou label } } else { lblMensagem.Text = "CPF INVÁLIDO"; } }



    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    terça-feira, 8 de maio de 2012 14:24
  • Olá Alex, segue um tuto simples sobre Sessions: http://www.fernandoalencar.eti.br/archives/tag/session

    Não sei qual a sua dúvida em Sessions, mas a sua utilização é igual a de uma variavel, porém sem necessidade  de instaciar antes ou definir um tipo para ela. Estou falando apenas do modo de utiliza-la hein! Não é uma variável!

    Vc precisa dar um nome a esta session que irá criar e para pegar o valor basta utilizar o mesmo nome. Vc pode resgatar esse mesmo valor em outra página sem nenhum código adicional, basta ter certeza de ela foi populada na página anterior.

    Cuidado com as abas dos browsers, se vc abrir duas abas, vc estará utilizando o contexto de conexão, ou seja, a mesma session na memória do servidor, ou seja, ela estará sempre sendo substituida pelo ultimo valor, ou pela ultima aba aberta.

    Boa Sorte com o TCC!


    Marco Aurélio Ferdinando Jr.

    • Marcado como Resposta Alex T. Leme terça-feira, 8 de maio de 2012 14:32
    terça-feira, 8 de maio de 2012 14:25
  • Brigado Marco,

    Estou tentando fazer o seguinte com a session,

    Preciso que ele carregue pra mim o nome do usuario logado no site em um textbox (travado) e depois grave no banco. A regra é a seguinte:

    O usuário vai preencher um formulário e nesse formulário deve constar o responsável pelas informações preenchidas, com isso se eu deixo um campo aberto para ele digitar o nome, ele pode colocar qualquer coisa e se eu trouxer o nome do usuário logado, fica mais seguro (pelo menos eu entendo dessa forma, me corrija se eu estiver errado).


    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    terça-feira, 8 de maio de 2012 14:35
  • Oi Alex, beleza?

    Cara, para fazer o que voce precisa, eu não instanciou um Dataset. Eu uso o SqlDataReader, assim:

    SqlConnection mConexaoSQL = new SqlConnection(Convert.ToString(Application["ConexaoDBProSaude"]));
                SqlCommand cmd = new SqlCommand(VariavelSQL_Ou_StringSQL, mConexaoSQL);
                mConexaoSQL.Open();
                SqlDataReader dr = cmd.ExecuteReader();

    //Se encontrar a informação

                if(dr.HasRows == true)
                {
                    dr.Read();
                    txtNome.Text = dr["Este_é_o_Campo_Que_Representa_o_Nome_Do_Usuario_No_Banco_De_Dados_mas_pode_colocar_aqui_o_indece_do_Campo_na_tabela"].ToString();
                    dr.Close();
                }
                else
                {
                    MessageBox.Show("Dados não localizados","A localizar dados",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    dr.Close();
                    mConexaoSQL.Close();
                    return;
                }

    Espero que seja a sua dúvida.

    Augusto



    • Editado Augustop terça-feira, 8 de maio de 2012 16:00
    terça-feira, 8 de maio de 2012 15:11
  • Augusto, vou tentar aqui e posto o resultado...

    Vou apenas dar uma adaptada para asp.net!!! mas mesmo assim obrigado!!!!


    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    terça-feira, 8 de maio de 2012 15:27


  • Correto Alex, porém não vejo necessidade de exibir o nome do próprio usuário na página. 

    Vc pode passar o valor da Session direto para o banco sem a necessidade de coloca-lo no TextBox antes. Apenas lembre-se do que eu disse, se o usuario Fulano estiver logado e o usuario Beltrano logar numa segunda aba, o valor da sua session será o id do Beltrano e não mais do Fulano! Entendeu? Isso acontece porque é o mesmo contexto.

    Agora, quanto a conexão ao banco para validar o seu CPF, vc precisa fazer uma select, veja neste site, tem um exemplo simples e comentado: http://www.csharp-station.com/Tutorial/AdoDotNet/lesson02

    Leia o código atentamente e veja que há um momento em o cara faz um While para percorrer todos os registros retornados. No seu caso, vc precisa montar a select para buscar pelo CPF e ao invés de While pode colocar no If que vc fez no código acima ( if("aqui quero verificar se o cpf existe no banco, se existir") ). Depois as outras validações seguem a mesma linha, basta vc adaptar para sua solução!!!

    Desculpe, vi agora que vc esta usando DataSet, segue um código de exemplo:

         public DataSet RetornarDataSet(string comandoSQL)
            {
                var ds = new DataSet();
                try
                {
                    SqlConnection conn = new SqlConnection(AutoCenter.Properties.Settings.Default.csAutocenter);
                    SqlCommand comm = new SqlCommand(comandoSQL, conn);
                    SqlDataAdapter da = new SqlDataAdapter(comm);
    
                    conn.Open();
                    da.Fill(ds);
                    conn.Close();
                }
                catch (Exception ex)
                {
                    
                }
    
                return ds;
            }
    Logo após para saber se retornou algum valor, apenas faça:

      if (ds.Tables[0].Rows.Count > 0)

    {

    // EXISTE VALOR

    } else

    {

    // NAO EXISTE

    }


    Marco Aurélio Ferdinando Jr.


    terça-feira, 8 de maio de 2012 15:42
  • Marco fiz assim, me corrija se eu estiver errado e desculpe as perguntas... mas tem hora q eu me enrolo todo com isso.. haha

    Eu estou na dúvida de como eu trago o resultado da minha consulta (no caso o nome) para o campo textbox...

    acredito que seja algo do tipo = txtnome.text = consulta?

     SqlConnection mConexaoSQL = new SqlConnection(Convert.ToString(Application["ConexaoDBProSaude"]));
                DataSet ds = new DataSet();
                SqlCommand comando = new SqlCommand("SELECT cpf, nome FROM TBPESSOA where cpf like '" +txtCPF.Text+"' ",mConexaoSQL);
                SqlDataAdapter da = new SqlDataAdapter(comando);
                da.Fill(ds);
    
                if (validaCPF.VALIDA_CPF(txtCPF.Text.Trim()))
                {
                    mConexaoSQL.Open();
                    if (ds.Tables[0].Rows.Count > 0)
                    {
    
                    }
                    else
                    {
                        lblMensagem.Text = "PACIENTE NÃO CADASTRADO";
                    }
    
                }
                else
                {
                    lblMensagem.Text = "CPF INVÁLIDO";
                }
    

    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    terça-feira, 8 de maio de 2012 19:25
  • Opa alex tranquilo, se ajudar..

    txtnome.Text = ds.Tables[0].Rows[0]["NOME"].ToString();

    Explicação: É mais facil vc entender o DataSet fazendo analogia à um vetor de planilhas (tipo as planilhas do Excel), com linhas e colunas onde colunas são os campos e as linhas são os registros.

    No exemplo acima:

    Tables[0] = Tabela no indice 0, ou seja vc pode ter varias tabelas.

    Rows[0] = Linha no indice 0, ou seja vc pode ter varias linhas.

    ["NOME"] = Coluna desejada, no caso NOME. (Não é case sensitive).


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::. Marco Aurélio Ferdinando Jr.

    • Marcado como Resposta Alex T. Leme quarta-feira, 9 de maio de 2012 12:12
    terça-feira, 8 de maio de 2012 20:49
  • Brigado Marco, deu certo....

    vou dar continuidade aqui e vou ver também aquele esquema referente as sessions, qualquer coisa volto a postar... Mas a dúvida inicial foi resolvida...

    Obrigado a todos os outros que também respoderam!!

    Até mais!


    Alex Torres Leme Suporte TI - Grupo Shinoda alex.torres@shinoda.com.br

    quarta-feira, 9 de maio de 2012 12:14
  • Imagina Alex,

    Não esqueça de marcar como Útil os posts que lhe ajudam e marcar como resposta as possiveis soluções postadas pelos usuarios. Assim mantemos o forum em ordem!


    .:: Contribua com o fórum! Marque como útil os posts que lhe ajudam e marque como resposta aqueles que resolvem a dúvida do post. ::. Marco Aurélio Ferdinando Jr.

    quarta-feira, 9 de maio de 2012 13:02