Jump to content


Photo

Geração De Matrícula


  • Faça o login para participar
3 replies to this topic

#1 telosonline

telosonline

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado
  • Localidade:Nova Iguaçu, RJ
  • Interesses:Informática e Tecnologia

Posted 28/12/2007, 10:29

Caros,

Estou precisando de uma ajuda muito grande.
O caso é o seguinte.
Preciso que o sistema gere uma matrícula do seguinte tipo:

AABBBCCCCC
Código
Onde,
AA é o ano(ex: 2007 é 07)
BBB é o código da unidade (ex: 001).
CCCCC é o código da pessoa.

Sendo,
Que o código da pessoa(CCCCC) é sequêncial referente ao código da unidade e ao ano. Exemplo:
0700100001 - Pessoa 1
0700200001 - Pessoa 2
0800100001 - Pessoa 3
0800200001 - Pessoa 4

Eu poderia estar criando 3 colunas no banco e utilizar um auto_increment para tal assim como utilizar a coluna ID para o CCCCC, só que não ficaria legal, muito menos do jeito que ficaria acima. Mas infelizmente tenho que resumir isso tudo numa única coluna.

Abraços,
Saudações,
Heron Santos
http://www.telosonline.rg.com.br/

#2 § Kenshin §

§ Kenshin §

    I'm coming back...!

  • Usuários
  • 574 posts
  • Sexo:Masculino
  • Localidade:BA
  • Interesses:Sou fã de linguagens direcionadas para a web, como php, (x)html, xml, wml.
    Também gosto de webdesign e ultimamente tenho me dedicado mais a aprender css, mysql, javascript, ajax e actionscript.
    Trabalho com os programas Dreamweaver, Illustrator e Flash.

Posted 28/12/2007, 12:58

na hora de criar um user faz uma consulta no banco de dados para pegar a ultima id, usa uma funcao para explodir a id e pegar o numero da unidade e o ultimo numero da sequencia.
depois cria uma nova id com o ano (pega o ano corrente usando funcao de data) e incrementa a unidade e/ou o sequencial.
na hora de cadastrar a nova id no banco verifica se ela ja foi criada nesse meio tempo, se ja, refaz o processo de consulta e criacao usando a ultima id disponivel, senao insere no banco de dados e pronto! :huh:

simples assim :D

vlw ^_^
Web Developer / Web Designer / Information Architect
"Living to learn... learning to live!"
Useful links: Rules | Search

#3 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 29/12/2007, 00:45

na hora de criar um user faz uma consulta no banco de dados para pegar a ultima id, usa uma funcao para explodir a id e pegar o numero da unidade e o ultimo numero da sequencia.
depois cria uma nova id com o ano (pega o ano corrente usando funcao de data) e incrementa a unidade e/ou o sequencial.
na hora de cadastrar a nova id no banco verifica se ela ja foi criada nesse meio tempo, se ja, refaz o processo de consulta e criacao usando a ultima id disponivel, senao insere no banco de dados e pronto! :huh:

simples assim :D

vlw ^_^


Desculpe, mas essa simplicidade ficaria complicada O.o

Na verdade, essa sua questão está mais pra banco de dados, poderia ser postada na seção específica (banco de dados no caso).
Mas aqui iria minha lógica nisso.
- Uma tabela de unidades
- Uma tabela com o usuario
e uma tabela de relação entre unidade, usuario e ano (tabela de matricula no caso).
Na hora do registro, eucriaria uma trigger pro banco dar o insert de acordo como você passou. Ou criaria a query via php.

Na consulta ficaria algo como:
SELECT usuario FROM tb_usuario u INNER JOIN tb_matricula m ON (SUBSTR(m.id_matricula, -5) = u.id_usuario) AND u.id_usuario = 00001

Algo assim, tentei explicar da melhor maneira possivel :)

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#4 telosonline

telosonline

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado
  • Localidade:Nova Iguaçu, RJ
  • Interesses:Informática e Tecnologia

Posted 22/01/2008, 14:23

savior,
desculpe o retorno... irei testar esta solução... estou meio preso no trabalho...
abraços,
Saudações,
Heron Santos
http://www.telosonline.rg.com.br/




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq