Oi pessoal, essa pode ser uma dúvida banal hehe, mais não estou conseguindo concluir o que estou querendo fazer.
Tenho um campo código que é auto-increment no meu mysql, só que eu queria que antes do número do auto-increment viesse o ano em que foi registrado e que todo ano o código retornasse a 1 no inicio de 2010.
como eu pensei em fazer:
criar um campo date no mysql e capturar também o dia em que foi registrado, isso seria o bônus de cada registro, mas para a exibição puxaria somente o ano junto ao código. A sequencia seria +/- assim:
2009/500
2009/501
2009/502
2009/503
2010/1
.
.
.
20xx/yyy
eu estou pensando de forma errada?
outra forma que eu estive pensando só que não sei como concretizar:
na tabela seria criado ao invés de um autoincrement, um varchar de 9 digitos onde na inclusão já seria delimitado o 2009/“numero comparado com o anterior + 1”
sinceramente to perdido T_T
Faça dois campos diferentes, um com o ID e outro com o ano. Via código você trabalhar os valores pra formatar como quiser.
E como resetar o campo auto-increment para que ele retorne a 0 quando começar um novo ano?
Faz tipo assim:
cria um campo pra codigo, que vai guardar ano/numero.
na hora de adicionar voce faz uma consulta do maior codigo no banco:
SELECT MAX(codigo) bla bla bla…
Vamos supor que entramos em 2010 agora. E ele vai buscar o último, por exemplo 2009/352.
Se estes 4 primeiros dígitos do ano atual (2010) forem maiores que os 4 primeiros dígitos do código (2009), insere o código:
2010/001.
Senão, pega os últimos 3 dígitos (352), acrescenta 1 (353) e insere 2009/353.
Vlw a atenção pessoal, copnsegui resolver, eis a solução:
Para selecionar o ultimo registro ficou assim:
public String ultimoValor(){
String retorno = "";
//--
// conexão com bd
//--
ResultSet rs = stmt.executeQuery( "select ano_num from correspondencia order by cod desc limit 1");//retorna o ultimo valor inserido
while (rs.next()) {
String txtAno_num = rs.getString("ano_num");
retorno = retorno + txtAno_num
}
//--
//
//exceções todas aqui
//
//--
return retorno;
}
no jsp:
//
//importar os pacotes java.util.* e java.text.SimpleDateFormat
//
<%
SimpleDataFormat formato = new SimpleDataFormat("yyyy");
String ano_str = formato.format(new Date());
int ano = Integer.parseInt(ano_str); //pra fazer operações de comparação
Correspondenia novo = new Correspondencia();
int ultimo_reg = integer.parseInt(novo.ultimo()); //e agora para fazer a comparação com o último registro
//condições
%>
para o campo de número da correspondencia eu não deixarei uma condição de auto-increment e sim uma sentinela para ir adicionando isso, já para o controle de trazer o ultimo registro vai ser posto no bd um autoincrement de onde será buscado o último valor ^^
espero que ajude quem estiver precisando tb
abraços e vlw por mais esta ajuda!