Usuário com melhor resposta
Como gerar número sequencial de 6 posições em C#

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
- Editado Ari C. RaimundoModerator quarta-feira, 25 de abril de 2012 13:19 Erro no título
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
-
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
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 CADCLIENTEpublic 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
-
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 -
-
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 -
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
-
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
-