none
Armazenar valor no label

    Question

  •    Ola pessoal.
       Estou trabalhando com c# asp.net. e o banco em sql express 2005.

       Estou com um probleminha aqui, talvez vcs podem me ajudar.
       Tenho um formulario corpo docente, nesse corpo docente eu quero puxar dois labels e armazenar nesses labels valores do banco de dados. No primeiro label eu quero armazenar um valor esse valor seria o curso do aluno, esse campo contem na minha tabela Curso, e no outro label outro valor que seria a turma do aluno, que contem na minha tabela Turma. Como faz para eu armazenar esses valores em meus dois labels do formulario corpo docente? Eu vou ter que saber o id_aluno p isso ne? O campo id_aluno esta na tabela Alunos do meu banco. Eu pensei em uma variavel global ou em uma session.

      As tabelas que vao ser necessarias acho que sao essas:


    BANCO->  Table Alunos (id_aluno, turma_principal, nome_aluno, matricula_aluno, cpf_aluno)
                    Table Curso (id_curso, nome_curso, abreceatura_curso)
                    Table Turmas ( id_turma, id_curso, descricao_turma, abreveatura_turma)

    Desde ja Obrigada.

    Thursday, August 20, 2009 7:50 PM

Answers

  • Ola  NovaesB,


    Na verdade como o Sanses mencionou acima é mais utilizado para propriedades (ViewState), mas pode ser usada para qualquer outro tipo, até considero uma boa prática.

    Porém você não precisa declarar a variável como no exemplo acima, pois você estará ocupando memória desnecessária, estará declarando uma variável e depois criando uma propriedade para usa-la não é muito bom. Pode fazer direto assim:

    public string variavel
    {
       get
       {
          if (Session["variavel"].ToString() == ""){
             Session["variavel"] = 0;
          }
          return Session["variavel"].ToString();
        }
        set
        {
           Session["variavel" = value;
         }
    }

    Mas no seu caso, recomendo que faça de outra maneira.

    Você talvez vai precisar buscar esta variavel de Sessão em outros lugares para executar algumas tarefas. Por isso, não recomendo que faça desta forma pois para você ter acesso a esta propriedade de Session acima, você precisará referenciar a página ou classe onde ela está, então faça algo mais simples, somente declare e use, depois remova quando necessário.

    Exemplo:

    //atribuindo um valor
    Session["variavel"] = 0;
    
    
    //pegar este valor, em qualquer página
    int valor = Convert.ToInt32(Session["variavel"]);
    
    
    //remover a variavel
    Session.Remove("variavel");

    Pois assim você perderá menos tempo, e obterá o mesmo resultado, e claro, mais fácil acesso.



    Atenciosamente


    Se a resposta for útil marque como tal
    Thiago Dorneles
    Friday, August 21, 2009 5:49 PM

All replies

  • vc qué puxar info do banco e armazenar para fazer passagens entre páginas, certo?

    pode usar session, mas uma boa forma é encapsulando ela.

    abs.
    Se alguem ajudou não esqueça de pontuar. Blog sobre programação http://adrianocavalari.spaces.live.com/
    Thursday, August 20, 2009 8:09 PM
  •   Eu pensei nisso.  Vc tem algum exemplo ai de como usar uma session?

    Obrigada
    Thursday, August 20, 2009 8:50 PM
  •    Eu fiz um teste aqui, declarei uma session, mas eu quero armazenar em minha session um campo do meu banco de dados, eu digito o meu campo mas o asp nao reconhece, ou seja, nao esta na lista. Como que eu faco para armazenar esse campo em minha variavel de session?



    Um abraco
    Thursday, August 20, 2009 9:04 PM
  • NovaesB

    Para voce usar a session é fácil, analise o código abaixo:

            private string _Variavel;
            public string variavel
            {
                get
                {
                    _Variavel = Session["variavel"].ToString();
                    return _Variavel;
                }
                set
                {
                    _Variavel = value;
                    Session["variavel"] = _Variavel;
                }
            }

    Dessa forma voce passar a usar a variável de sessão como uma propriedade,e para armazenar o valor do seu campo, basta fazer:

    variavel = seucampo.ToString();


    Espero ter ajudado
    []'s
    Sanses


    --> se a resposta foi util marque-a como util.
    Friday, August 21, 2009 3:16 AM
  • Ola  NovaesB,


    Na verdade como o Sanses mencionou acima é mais utilizado para propriedades (ViewState), mas pode ser usada para qualquer outro tipo, até considero uma boa prática.

    Porém você não precisa declarar a variável como no exemplo acima, pois você estará ocupando memória desnecessária, estará declarando uma variável e depois criando uma propriedade para usa-la não é muito bom. Pode fazer direto assim:

    public string variavel
    {
       get
       {
          if (Session["variavel"].ToString() == ""){
             Session["variavel"] = 0;
          }
          return Session["variavel"].ToString();
        }
        set
        {
           Session["variavel" = value;
         }
    }

    Mas no seu caso, recomendo que faça de outra maneira.

    Você talvez vai precisar buscar esta variavel de Sessão em outros lugares para executar algumas tarefas. Por isso, não recomendo que faça desta forma pois para você ter acesso a esta propriedade de Session acima, você precisará referenciar a página ou classe onde ela está, então faça algo mais simples, somente declare e use, depois remova quando necessário.

    Exemplo:

    //atribuindo um valor
    Session["variavel"] = 0;
    
    
    //pegar este valor, em qualquer página
    int valor = Convert.ToInt32(Session["variavel"]);
    
    
    //remover a variavel
    Session.Remove("variavel");

    Pois assim você perderá menos tempo, e obterá o mesmo resultado, e claro, mais fácil acesso.



    Atenciosamente


    Se a resposta for útil marque como tal
    Thiago Dorneles
    Friday, August 21, 2009 5:49 PM
  • Thiago

    E se no caso a aplicação dele for grande e usar estas variaveis em várias páginas ?

    Coloquei desta forma por que ai ele pode criar uma classe de acesso a estas variaveis seguindo este modelo e usar em todas as páginas. Da sua maneira ele teria que codificar em todas as páginas e se precisa-se  alterar algo ficaria bem complicada a manutenção.

    Alem de que trabalhar com o intelisense é bem mais fácil do que lembrar os nomes das variaveis todas ..

    Claro, isso é o meu ponto de vista e cada um tem o seu...

    Espero ter ajudado
    []'s
    Sanses


    --> se a resposta foi util, marquea como util
    Friday, August 21, 2009 8:11 PM
  • Ola Sanses,


    Eu concordo com você, claro que é muito melhor, e mais organizado.

    Apenas sugeri uma forma que acredito que será de fácil entendimento para ele.



    Atenciosamente

    Thiago Dorneles
    Saturday, August 22, 2009 6:58 PM
  • Obrigada Thiago.

    Mas meu amigo para adicionar esse valor na variavel session, no meu caso seria o valor do campo do banco de dados, como eu adicionaria esse valor?
    Session["variavel"] = ?

    Um abraco

    Sunday, August 23, 2009 10:55 PM
  • Obrigada Thiago.

    Mas meu amigo para adicionar esse valor na variavel session, no meu caso seria o valor do campo do banco de dados, como eu adicionaria esse valor?
    Session["variavel" ] = ?

    Um abraco


    Ola NovaesB,


    Isto mesmo.

    O "?" é o retorno do banco, certo?! É só mandar colocar diretamente dentro da variável.

    Para você adicionar uma valor a uma variável de sessão é so você atribuir diretamente, se ela não existir, será criada no exato momento.

    Obs.: Se você estiver programando em vb.net: Session("variavel") = ?.


    Era essa sua dúvida?


    Atenciosamente

    Se a resposta for útil marque como tal



    Thiago Dorneles
    Monday, August 24, 2009 11:44 AM
  • NovaesB

    É isso mesmo, se voce estiver usando um data reader ficaria assim:

    Session["Variavel"] = datareader.GetString(1);

    ou no exemplo que eu te dei seria:

    variavel = datareader.GetString(1);

    da mesmo forma que voce usa pra colocar o valor do banco em um textbox por exemplo.


    Espero ter ajudado
    []'s
    Sanses


    --> se a resposta foi util, marquea como util.
    Monday, August 24, 2009 2:11 PM
  • faça um método na camada de dados (se estiver trabalhando com camadas), no qual retorne o valor com ExecuteEscalar.

    e atribua assim:

    Session["variavel"] = SeuMetodo();

    public string SeuMetodo()
    {
       return SqlCommand.ExecuteEscalar();
    }

    Claro que faltam códigos neste método, mas para ter uma ideia.

    Abs
    Se alguem ajudou não esqueça de pontuar. Blog sobre programação http://adrianocavalari.spaces.live.com/
    Monday, August 24, 2009 5:16 PM
  •     Boa tarde!

        A resposta ajudou sim, mas como eu sou nova nessa area, em c#.net, nao estou sabendo buscar o curso de um determinado aluno. Pois, para eu buscar o curso e a turma eu vou ter que saber qual aluno esta logado naquele momento, dai qdo entrar no primeiro formulario de avaliacao que sera o corpo docente o sistema vai ter que trazer o aluno que esta logado (id_aluno) e trara automaticamente em um label que contem nesse formulario o seu curso e a sua turma, entao com o relacionamento que eu tenho entre essas tabelas : Alunos, curso, turma, o sistema tem que trazer automatico no label o curso e a turma de um determinado aluno, a duvida minha e como fazer isso.
       Agora para criar a variavel de session eu vou seguir o seu conselho, e simples cria-la.
       Qto a minha duvida de cima vc tem algum conselho?


    Desde ja Obrigada.
    Monday, August 24, 2009 5:27 PM
  • Ola NovaesB,

    Deixa eu ver se entendi, o aluno fará o login, certo?!
    E apartir deste login você vai buscar as informações da turma e curso dele, é isso?

    O que você precisa realmente.
    A consulta sql? Como pesquisar no banco? Como pegar os valores de retorno?



    Atenciosamente


    Thiago Dorneles
    Monday, August 24, 2009 6:23 PM
  •    olá Thiago!

         Exatamente isso. Para ajudar nesse processo qdo o aluno vai logar ele e direcionado para uma pagina, nessa pagina e carrego no topo a matricula do aluno, o nome e o id do aluno, esses dados sao mostrados em labels.
        Agora para puxar o curso do aluno e a turma eu acho que vou ter q usar o id_aluno que esta sendo carregado no topo, pois o id_aluno tem referencia com as tabelas Cursos e Alunos, certo? E necessario uma consulta sql.
        Como eu poderia armazenar esse curso e turma em minhas labels?


    Obrigada mais uma vez.

    Um abraco 
    Monday, August 24, 2009 8:37 PM
  • Ola NovaesB,

    Vamos lá então.

    Uma simples consulta sql você consegue buscar todos os dados juntos (claro, desde que as tabelas estejam relacionadas):

    select a.id_aluno,a.nome_aluno,a.matricula, t.nome_turma, c.nome_curso
    from Alunos a, Turmas t, Cursos c
    where a.id_turma = t.id_turma and a.id_curso = c.id_curso and a.nome_aluno = 'Fulano'

    obs.: eu não sei como foi criado seu banco de dados, por isso não sei seus relacionamentos, no exemplo somente demonstrei como buscar as informacoes ligando os relacionamentos, por assim dizer.


    Assim você terá em apenas uma consulta todas as informações que queria. Aí você pode adicionar como quiser, em variáveis de sessão, em um label, defina como é melhor para você.


    Era isso sua dúvida?


    Atenciosamente

    Se a resposta for útil marque como tal
    Thiago Dorneles
    Tuesday, August 25, 2009 11:46 AM
  •    Eu entendi Thiago, e essa a consulta que tem que executar, mas como eu faria para adicionar em uma variavel session, lembrando que o que eu quero e puxar o curso e a turma em labels do aluno logado nesse formulario.

    Obs: Qdo o usuario loga no sistema ele vai para uma pagina onde e mostrado a matricula e o codigo do usuario, e nessa pagina tb contem um button AVALIAR, qdo o usuario e direcionado para essa pagina ele clicara nesse avaliar dai ele sera direcionado para um outro form onde comecara a avaliacao. E nesse formulario que eu quero puxar o curso e a turma do determinado usuario logado, certo? Na onde eu adicionaria essa consulta? Seria necessario uma session ou nao?


    Um abraco
    Tuesday, August 25, 2009 6:30 PM
  • Ola NovaesB,

    Você vai ter uma tela de login certo?! Quando clicar em ENTRAR, vai no banco e busca as informações, e achar alguma coisa transfere para a página principal.

    O retorno do banco você pode guardar em uma variável de sessão mesmo.


    Você sabe fazer consultas, conectar, no banco de dados?



    Atenciosamente
    Thiago Dorneles
    Tuesday, August 25, 2009 6:39 PM
  • Sei sim.

    Ok, vou fazer exatamente isso, irei usar uma variavel de session.

    Obrigada amigo.
    Tuesday, August 25, 2009 9:00 PM
  • Boa tarde Thiago!

        A variavel de session deu certo. Tenho outro probleminha aqui talvez vc sabe como resolve-lo.
        O meu projeto e uma avaliacao da faculdade, onde os alunos respondem questoes de detreminada categoria. Cada categoria puxa o gridview com as questoes, mas eu tenho uma unica categoria que e diferente das outras, por ela ser diferente os dados vao ter q ser salvos de outra maneira, e os dados desse form Docente sera salvos em outra tabela que nao foi a mesma das outras categorias.

         Table: Av_disciplina (id_av_disciplina, id_aluno_disciplina, id_questao, nota)

         Essa categoria é a categoria Corpo Docente. Qdo o usuario entra no formulario dessa categoria ja e carregado na pagina dois dropdownlist, um drop com as disciplinas do determinado usuario que esta logado (ja e carregado automatico no drop as disciplinas q o aluno logado faz) e outro com o professor que realiza a disciplina que foi selecionada no drop. Cada aluno faz varias disciplinas certo? Exemplo: aluno faz 3 disciplinas, entao ele vai ter que responder as mesmas questoes para cada disciplina. No grid contem descricao da questao e para cada questao um drop para selecionar a nota de 0 a 5. Para salvar as notas estou usando um button.
         Como que eu faco para SALVAR a valiacao por disciplina, pois cada disciplina respondida eu vou ter que continuar no mesmo formulario ate o aluno responder as questoes para todas as disciplinas que ele faz, ou seja, para todas que estao no drop.

    Esse e o codigo que eu usei para salvar nas outras categorias, e deu certo, como essa categoria e diferente vou ter q acrescentar algumas linhas de codigo:

    protected void btnSalvarCoord_Click(object sender, EventArgs e)
        {

            foreach (GridViewRow linha in grdCoordenador.Rows)
            {
                int categoria;
                int aluno;

                aluno = Convert.ToInt16(lblCodigo.Text);
                categoria = 6;

                int resposta = int.Parse((linha.FindControl("drpCoordenador") as DropDownList).SelectedValue);
                int cod_questao = int.Parse(grdCoordenador.DataKeys[linha.RowIndex].Value.ToString());

                SqlConnection conn = new SqlConnection(("Data Source=BRUNA-PC;Initial Catalog=CPA;Integrated Security=True"));

                string sql = "INSERT INTO Av_geral( id_aluno, id_questao, nota ) VALUES ('" + aluno + "', '" + cod_questao + "', '" + resposta + "' )";
                                                                   //obs: esses campos sao da minha outra tabela


    Desde ja Obrigada

    Thursday, August 27, 2009 5:10 PM