Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dsaquevo1

Código sequencial com o ano civil de forma automática

Mensagens Recomendadas

dsaquevo1

Estou escrevendo uma aplicação em C# com um Banco de Dados Access.

Preciso criar em um ecrã de cadastro (por exemplo) uma função para gerar um número (código cliente por exemplo) de forma sequencial e adicionar o ano, por exemplo 0001/2016, 0002/2016..., e quando mudar o ano a numeração recomeça, por exemplo 0123/2017, 0124/2017, 0001/2018, 0002/2018...

Desde já muito grato pela ajuda!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

Trazes esse campo do ultimo registo, se não houver registos gravas "1/ano".

ex: o 1 aparece 0001

string cc = string.Format("{0:0000}/{1}", 1, DateTime.Today.Year);

se houver registo, verificas o ano, se o ano for igual ao ano actual, somas +1 à parte esquerda, senão gravas como o exemplo de cima...

ex:

string[] campo_array = campo_da_bd.Split('/');
if (campo_array.Length == 2)
{
   int cod = int.Parse(campo_array[0]);
   int ano = int.Parse(campo_array[1]);

   string cc = string.Empty;
   if (ano == DateTime.Today.Year)
   {
    cc = string.Format("{0:0000}/{1}", ++cod, DateTime.Today.Year);
   }
   else
   {
    cc = string.Format("{0:0000}/{1}", 1, DateTime.Today.Year);
   }

   // Fazer gravar na base de dados
}
else
{
   MessageBox.Show("o campo não veio com o formato certo");
}

Podes e acho que deves usar o int.TryParse em vez do int.Parse

Editado por vikcch
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dsaquevo1

Quem medo sente de perguntar, permanece onde está sentado pra um bom tempo e perdendo muita coisas... :)

Vikcch, com todo respeito, preciso de mais uma lucidez (lembrar que sou iniciante em C#, sñ mesmo cru)

aonde é que ia por este código e o resto do código abaixo? string cc = string.Format("{0:0000}/{1}", 1, DateTime.Today.Year);

qual seria por exemplo o campo_array ?? campo_da_bd(já sei que é o campo da para apresentar o código)

Desde já, um forte abraço agradecido!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

string[] campo_array = campo_da_bd.Split('/');

campo_da_bd é a string com o valor que veio da base da dados, o ultimo registo inserido...

.Split('/') divide essa string (campo_da_bd) quando achar o caractere / (barra)

campo_array é um array que é criado a partir da divisão de cima (do split)...

por exemplo, se o campo_da_bd tiver o valor "0004/2016" o array campo_array fica com 2 elementos, campo_array[0] fica com o valor "0004", e campo_array[1] fica com o valor "2016"

Onde metes o codigo não sei.... depende como estás a fazer o programa....

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dsaquevo1

Mais uma vez, grato pela ajuda. Penso que já foi o bastante.

Assim que eu voltar aplicar isso, retorno.

Abraços!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.