none
Como fazer para opter sequencia de numeros em ordem crescente dentro de um TextBox??? RRS feed

  • Pergunta

  • Pessoal,

    Veja se alguem poderia me ajudar...

    Preciso fazer um sequencial numerico em ordem crescente para aparecer automatico em um TexBox este mesmo numero será gravado no banco, o mesmo será um numero de controle...

    Tem que ser de 0 "zero" à Infinito.

    Alguem tem idéia de como fazer isso??

    Desde Já obrigado pessoal...


    Luiz Carlos

    quarta-feira, 8 de fevereiro de 2012 20:05

Respostas

  • Entendi! Voce esta colocando esse metodo em uma classe ou ai no form mesmo? 

    se estiver em uma outra classe mude a assinatura do metodo para publico e estatico. Aclasse devce ser publica tb:

    public static int RetornarUltimoNumeroMaisUm()
    {
        SqlConnection sqlConnection1 = new SqlConnection("SUA STRING DE CONEXAO");
        SqlCommand cmd = new SqlCommand();
        Object retorno;


        cmd.CommandText = "SELECT (NVL(MAX(sua_coluna_de_numeros), 0)  + 1)  FROM SUA_TABELA";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;


        sqlConnection1.Open();


        retorno = cmd.ExecuteScalar();
        sqlConnection1.Close();


        return Convert.ToInt(retorno);
    }

    A chamada ao método fica assim:

    seuTextBox.Text = NomeDaClasseQueEstaOMetodo.RetornarUltimoNumeroMaisUm().ToString();



    POR FAVOR, SE AJUDOU MARQUE COMO RESPOSTA
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 13:20
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 13:45
    • Marcado como Resposta LC-Locker quinta-feira, 9 de fevereiro de 2012 15:14
    quinta-feira, 9 de fevereiro de 2012 13:19

Todas as Respostas

  • Bom primeiro você pega os números do banco, e faz um array de char, depois pega esse array ordena em ordem crescente e poe na textbox:

     char[] n = "45683209".ToArray(); //pegando valor do banco e dando ToArray();
     textBox1.Text = string.Join("", n.OrderBy(i => i).ToArray()); //se você quiser que os numeros sejam separados por virgula ou por qualquer outra string substitua o "" por "," por exemplo


    Ao infinito e além!

    quarta-feira, 8 de fevereiro de 2012 20:48
  • faz um select no banco pra pegar o ultimo numero registrado e soma 1.  
                                                      
    private int RetornarUltimoNumeroMaisUm()
    {
        SqlConnection sqlConnection1 = new SqlConnection("SUA STRING DE CONEXAO");
        SqlCommand cmd = new SqlCommand();
        Object retorno;

        cmd.CommandText = "SELECT (MAX(sua_coluna_de_numeros) + 1)  FROM SUA_TABELA";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        retorno = cmd.ExecuteScalar();
        sqlConnection1.Close();

        return Convert.ToInt(retorno);
    }
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 10:24
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 11:16
    quinta-feira, 9 de fevereiro de 2012 00:34
  • Obrigado pessoal pela ajuda...

    Renato,

    Utlilizei sua logica e deu um erro no TOInt(Retorno);

    Ai coloquei assim -> return Convert.ToInt32(retorno);

    Da algum problema isso?

    Como faço para chamar esta função no TextBox?

    Desde já obrigado a todos...


    Luiz Carlos

    quinta-feira, 9 de fevereiro de 2012 12:03
  • Na verdade era Convert.ToInt32 mesmo.. é que eu fiz digitando aqui no site e não detectei essa falha.

    Então, vc tem provavelmente tem um Form que tem uma tela de cadastro certo? Para Cada cadastro vc quer que o código do textBox mude certo?

    Se for isso vc cocola a chamada no evento Load do seu form. Para chamar o evento Load de 2 cliques na parte de cima do formulario.

    //vc chama o metodo no Load

    private void frmSeuFormulario_Load(object sender, EventArgs e)
     {
            txtSeuTextBox.Text =  RetornarUltimoNumeroMaisUm().ToString();
     }

    //Depois, no final do evento click seu botão de Cadastrar, vc chama o método de novo 

    private void btnSeu_botao_Cadastrar_Click(object sender, EventArgs e)
     {

             //aqui vc pega os dados da tela, inclusive do textBox (que esta com o numero) e grava no banco

             //faz todo o seu processamento

    // no final só alimenta o textBox de novo.

            txtSeuTextBox.Text =  RetornarUltimoNumeroMaisUm().ToString();

     }

    SE A RESPOSTA FOI UTIL, POR GENTILEZA MARQUE.

    Bons estudos!


    quinta-feira, 9 de fevereiro de 2012 12:36
  • Renato,

    Estou fazendo WEB em Asp.Net com C#

    Minha pagload esta assim:

    protected void Page_Load(object sender, EventArgs e)
            {
               TextBox7.Text = DateTime.Now.ToString();
               TextBox11.Text = RetornarUltimoNumeroMaisUm().ToString();
      }

    Mas não funcionou...


    Luiz Carlos

    quinta-feira, 9 de fevereiro de 2012 12:56
  • Na verdade tinha um ERRINHO no select que não tratava o caso de nao ter nenhum registro na tabela. Coloquei a função NVL. 

    Mais confira se: Voce colocou o nome da sua tabela, o nome do seu campo e a sua string de conexao corretamente? Essa solução é para banco de dados SQL SERVER

    private int RetornarUltimoNumeroMaisUm()
    {
        SqlConnection sqlConnection1 = new SqlConnection("SUA STRING DE CONEXAO");
        SqlCommand cmd = new SqlCommand();
        Object retorno;

        cmd.CommandText = "SELECT (NVL(MAX(sua_coluna_de_numeros), 0)  + 1)  FROM SUA_TABELA";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        retorno = cmd.ExecuteScalar();
        sqlConnection1.Close();

        return Convert.ToInt(retorno);
    }



    quinta-feira, 9 de fevereiro de 2012 13:02
  • Esse codigo para acesso ao banco ficou joia, não ta dando erro, coloquei os dados do banco e da tabela sim...

    O problema ta em chamar essa função para ficar fixo no TextBox11 automaticamente.

    Estou colocando assim no PageLoad:

    TextBox11.Text = RetornarUltimoNumeroMaisUm().ToString();

    E o

    RetornarUltimoNumeroMaisUm() - fica sublinhado em vermelho com mensagem que não existe no contexto corrente.


    Luiz Carlos

    quinta-feira, 9 de fevereiro de 2012 13:14
  • Entendi! Voce esta colocando esse metodo em uma classe ou ai no form mesmo? 

    se estiver em uma outra classe mude a assinatura do metodo para publico e estatico. Aclasse devce ser publica tb:

    public static int RetornarUltimoNumeroMaisUm()
    {
        SqlConnection sqlConnection1 = new SqlConnection("SUA STRING DE CONEXAO");
        SqlCommand cmd = new SqlCommand();
        Object retorno;


        cmd.CommandText = "SELECT (NVL(MAX(sua_coluna_de_numeros), 0)  + 1)  FROM SUA_TABELA";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;


        sqlConnection1.Open();


        retorno = cmd.ExecuteScalar();
        sqlConnection1.Close();


        return Convert.ToInt(retorno);
    }

    A chamada ao método fica assim:

    seuTextBox.Text = NomeDaClasseQueEstaOMetodo.RetornarUltimoNumeroMaisUm().ToString();



    POR FAVOR, SE AJUDOU MARQUE COMO RESPOSTA
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 13:20
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 13:45
    • Marcado como Resposta LC-Locker quinta-feira, 9 de fevereiro de 2012 15:14
    quinta-feira, 9 de fevereiro de 2012 13:19
  • Renato,

    Muito obrigado funcionou!!!

    Esse forum já me ajudou muito!!!

    Obrigado mesmo pela força...


    Luiz Carlos

    quinta-feira, 9 de fevereiro de 2012 14:02
  • Obrigado,

    Precisando estamos aqui.

    se ajudou marque a resposta ;)


    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 14:13
    • Marcado como Resposta LC-Locker quinta-feira, 9 de fevereiro de 2012 15:14
    • Não Marcado como Resposta LC-Locker quinta-feira, 9 de fevereiro de 2012 15:14
    quinta-feira, 9 de fevereiro de 2012 14:10