Controle de versão e auto-incremento
Boa tarde a todos.
Dois Problemas:
1) Quando eu atualizar o meu software eu devo pular a versão de 1.0 para 1.01 ou de 1.0 para 1.1?
2) O problema é o seguinte: se eu tiver a sequência de itens cadastrados 1, 2, 3, 4..., 167 e utilizar ´select Max(codigo) from item´, eu econtrarei 167. Mas se o usuário, por acidente, cadastrar o item com o código 955, e utilizar ´select Max(codigo) from item´, então eu encontrarei 955 e não 167.
O que eu quero é justamente dar continuidade a sequência de onde eu parei, ou seja, quando eu for cadastrar novamente, o próximo item será o código 168 e não 956.
Dois Problemas:
1) Quando eu atualizar o meu software eu devo pular a versão de 1.0 para 1.01 ou de 1.0 para 1.1?
2) O problema é o seguinte: se eu tiver a sequência de itens cadastrados 1, 2, 3, 4..., 167 e utilizar ´select Max(codigo) from item´, eu econtrarei 167. Mas se o usuário, por acidente, cadastrar o item com o código 955, e utilizar ´select Max(codigo) from item´, então eu encontrarei 955 e não 167.
O que eu quero é justamente dar continuidade a sequência de onde eu parei, ou seja, quando eu for cadastrar novamente, o próximo item será o código 168 e não 956.
Hacson Menezes
Curtidas 0
Respostas
Marcelo Saviski
27/06/2003
Oi, talvez eu possa ajudar
Não sei como montar isso , mas tente fazer um SELECT onde o Where exiba apenas os registros cujo codigo+1 é diferente do codigo do proximo registro, para filtrar os numeros pulados
Não sei como montar isso , mas tente fazer um SELECT onde o Where exiba apenas os registros cujo codigo+1 é diferente do codigo do proximo registro, para filtrar os numeros pulados
GOSTEI 0
Lord_angel
27/06/2003
bom, primeiro
eu nao sou nem o carnette nem o Aroldo, mas com certeza eles estao entre os mais sábios usuarios de delphi deste forum, e todo mundo gostaria sempre de contar com a ajuda deles, que é sempre mais experiente, mas..
É agressivo entrar no forum e ler um topico deste tipo ´Para Fulano ou Cicrano´, o fórum é feito por todos os usuarios que postam suas dúvidas e por aqueles que as respondem, independente do nivel de conhecimento, voce nao deve menosprezar quem quer te ajudar, porque é tentando tirar as duvidas dos colegas que a gente mais aprende..
Concluindo, reveja estes seus conceitos para tópicos, apenas apresentando as suas duvidas, porque essa é uma das REGRAS do forum ok?
se o carnette ou o Aroldo souberem responder eles irao te ajudar, mas nada impede que alguem tente (como eu) te ajudar tambem.. isso é uma dica, um puxao de orelha e um lembrete de uma das regras do forum.
Agora falando sobre a sua dúvida
se o campo tem que ser do tipo ´auto-incremento´, verifique se a sua base de dados nao suporta o mesmo, caso contrario, por exemplo se voce usa IB/FB que nao suporta campos desse tipo, voce pode criar um Generator e um trigger que incremente o seu codigo automaticamente, sem a interferencia do usuario. Agora se for necessária a intervenção do usuário na geracao do codigo, verifique antes da confirmação no banco se o codigo dado pelo usuario nao fere a regra para o mesmo (nesse caso, o codigo nao deve ser maior que o ultimo codigo+1), e apresente uma mensagem do tipo ´Codigo invalido, o codigo maximo aceitado é 99999 (o maior valor ate aki gravado+1)´. O usuario pode ainda colocar um valor jah existente, o que tambem gerará um erro do tipo EKeyViolation, pois uma chave primaria nao pode ser duplicada..
bom aí estão algumas dicas e considerações sobre criacao de campos auto incremento, talvez (com certeza) o carnette e o Aroldo tem algo melhor para dizer, mas nada impede que a partir daqui voce consiga desenvolver o seu raciocinio e solucionar o seu problema, o que é melhor para voce mesmo, pois voce aprende mais do que simplesmete usando algo escrito aki sem entender o porque..
valew?
Fábio Nascimento
[]´s
eu nao sou nem o carnette nem o Aroldo, mas com certeza eles estao entre os mais sábios usuarios de delphi deste forum, e todo mundo gostaria sempre de contar com a ajuda deles, que é sempre mais experiente, mas..
É agressivo entrar no forum e ler um topico deste tipo ´Para Fulano ou Cicrano´, o fórum é feito por todos os usuarios que postam suas dúvidas e por aqueles que as respondem, independente do nivel de conhecimento, voce nao deve menosprezar quem quer te ajudar, porque é tentando tirar as duvidas dos colegas que a gente mais aprende..
Concluindo, reveja estes seus conceitos para tópicos, apenas apresentando as suas duvidas, porque essa é uma das REGRAS do forum ok?
se o carnette ou o Aroldo souberem responder eles irao te ajudar, mas nada impede que alguem tente (como eu) te ajudar tambem.. isso é uma dica, um puxao de orelha e um lembrete de uma das regras do forum.
Agora falando sobre a sua dúvida
se o campo tem que ser do tipo ´auto-incremento´, verifique se a sua base de dados nao suporta o mesmo, caso contrario, por exemplo se voce usa IB/FB que nao suporta campos desse tipo, voce pode criar um Generator e um trigger que incremente o seu codigo automaticamente, sem a interferencia do usuario. Agora se for necessária a intervenção do usuário na geracao do codigo, verifique antes da confirmação no banco se o codigo dado pelo usuario nao fere a regra para o mesmo (nesse caso, o codigo nao deve ser maior que o ultimo codigo+1), e apresente uma mensagem do tipo ´Codigo invalido, o codigo maximo aceitado é 99999 (o maior valor ate aki gravado+1)´. O usuario pode ainda colocar um valor jah existente, o que tambem gerará um erro do tipo EKeyViolation, pois uma chave primaria nao pode ser duplicada..
bom aí estão algumas dicas e considerações sobre criacao de campos auto incremento, talvez (com certeza) o carnette e o Aroldo tem algo melhor para dizer, mas nada impede que a partir daqui voce consiga desenvolver o seu raciocinio e solucionar o seu problema, o que é melhor para voce mesmo, pois voce aprende mais do que simplesmete usando algo escrito aki sem entender o porque..
valew?
Fábio Nascimento
[]´s
GOSTEI 0