none
Como gerar número sequencial de 6 posições em C# RRS feed

  • Pergunta

  • Pessoal,

    Preciso de uma função em C# para gerar numeros sequenciais com 6 posições -> 999999, sera gerado o numero apenas quando eu chamar essa função.

    Alguem tem idéia de como poderia ser?

    Desde já muito obrigado!!!


    Luiz Carlos


    terça-feira, 24 de abril de 2012 20:39

Respostas

  • Luiz,

    Seu código não gera um número sequencial. Se você quer algo do tipo é só declarar uma variável como membro de classe que representa um contador e incrementar a mesma em cada chamada do método GeraSequenciaNumerica. Por exemplo:

    public class SuaClasse
    {
        private int contador = 0;
    
        public string GeraSequenciaNumerica()
        {
            // incrementa contador
            contador++;
    
            // recupera valor formatado
            return contador.ToString("000000");
        }
    
        // restante do código
    }

    PS: De qualquer forma, não concordo com esse tipo de abordagem.

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 20:27
    quarta-feira, 25 de abril de 2012 20:17
    Moderador
  • Pessoal fiz assim e funcionou...

    public string GeraSequenciaNumerica()

            {
                int i = 1;
                foreach (int b in Guid.NewGuid().ToByteArray())
                {
                    i = ((int)b + 1);
                }
                return string.Format("{0}", i);
            }

    Ai só formatei ele... valeu...


    Luiz Carlos

    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 18:17
    • Não Marcado como Resposta Ari C. RaimundoModerator quarta-feira, 25 de abril de 2012 19:54
    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 20:03
    quarta-feira, 25 de abril de 2012 18:17

Todas as Respostas

  • Ola
    Você vai armazenar a sequencia, ou seja você chama uma função que gera o codigo e quando chamar novamente o codigo sera incrementado a patir da ultima geração.

    Abaixo segue um metodo que utilizo para gerar sequencias usando Banco de Dados

            // Gera o codigo auto-incremento para as tabelas
            // Onde:
            // pCampo = recebe o nome do campo da tabela a ser incrementado exemplo CODCLIENTE
            // pTabela = recebe o nome da do Banco de Dados exemplo CADCLIENTE

             public static Int64 geraID(string pCampo, string pTabela)
            {
                Int64 retID = 0;
                System.Data.IDataReader dr;
                System.Data.IDbCommand cmd = retCmd();
                cmd.Connection = cn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "SELECT MAX(" + pCampo + ")+1 AS ID FROM " + pTabela;
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    if (!dr.IsDBNull(0))
                    {
                        
                        retID = (Int64)dr[0];
                        dr.Close(); dr.Dispose(); cmd.Dispose();
                        return retID;
                    }
                    else
                    {
                        return 1;
                    }
                }
                else
                {
                    retID = (Int64)dr[0];
                    dr.Close(); dr.Dispose(); cmd.Dispose();
                    return retID;
                }
            }

    Esse metodo retorna um numero inteiro, você pode formato para a exibição adicionando zeros a esquerda

    String sValorSaida = geraID("CODCLI","CADCLIENTE").ToString().PadLeft(6,'0');

    Espero ter ajudado


    Junior

    terça-feira, 24 de abril de 2012 23:54
  • Luiz,

    Você vai utilizar esse código para armazenar registros em um banco de dados? Não seria melhor utilizar um campo com auto incremento?

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    quarta-feira, 25 de abril de 2012 04:52
    Moderador
  • Mas esse codigo ele gera numero com 6 casas?

    Não vou precisar guardar em banco isso, mas é uma boa idéia...


    Luiz Carlos

    quarta-feira, 25 de abril de 2012 11:02
  • Luiz,

    Porque o número tem que possuir 6 casas? Simplesmente faça a formatação do mesmo com 6 casas, mas utilize uma variável int por exemplo para controlar o número sequencial.

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    quarta-feira, 25 de abril de 2012 13:13
    Moderador
  • Pessoal fiz assim e funcionou...

    public string GeraSequenciaNumerica()

            {
                int i = 1;
                foreach (int b in Guid.NewGuid().ToByteArray())
                {
                    i = ((int)b + 1);
                }
                return string.Format("{0}", i);
            }

    Ai só formatei ele... valeu...


    Luiz Carlos

    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 18:17
    • Não Marcado como Resposta Ari C. RaimundoModerator quarta-feira, 25 de abril de 2012 19:54
    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 20:03
    quarta-feira, 25 de abril de 2012 18:17
  • Luiz,

    Seu código não gera um número sequencial. Se você quer algo do tipo é só declarar uma variável como membro de classe que representa um contador e incrementar a mesma em cada chamada do método GeraSequenciaNumerica. Por exemplo:

    public class SuaClasse
    {
        private int contador = 0;
    
        public string GeraSequenciaNumerica()
        {
            // incrementa contador
            contador++;
    
            // recupera valor formatado
            return contador.ToString("000000");
        }
    
        // restante do código
    }

    PS: De qualquer forma, não concordo com esse tipo de abordagem.

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    • Marcado como Resposta LC-Locker quarta-feira, 25 de abril de 2012 20:27
    quarta-feira, 25 de abril de 2012 20:17
    Moderador
  • Olá bom dia,

    Gostei do seu método para incrementar campo id de tabela. Sou novato no assunto, vc poderia mostrar como eu usaria esse método em um método de insert. Por favor.

    segunda-feira, 24 de agosto de 2015 13:01