INSTITUCIONAL
COMUNIDADE
BLOG
AJUDA
MINHA CONTA
EN PT ES

Imagen6392P

De GeneXus 8.0 RC: Propriedade autonumber

(12/08/2003-00:00)
Com esta propriedade de atributo é possível numerar automaticamente a chave primária de uma transação de um nível.

Com essa funcionalidade se oferece maior legibilidade ao código, integridade na base de dados e se potencia a programação. Concretamente, em vez de definir uma numeração que depende da aplicação que o chama, o desenvolvedor se garante que não sejam gerados "ocos" na numeração, configurando-a na base de dados.

Descrição
Quando uma tabela tem uma chave simples (quer dizer está composta por um atributo só) e o tipo de dados é numérico, pode numerar-se automaticamente utilizando a funcionalidade que oferecem os manipuladores de base de dados com esta finalidade.
A forma de elaborá-lo com GeneXus é configurando a propriedade Autonumber do atributo chave da tabela. Para isto, é necessário estar no modelo de desenho e configurar as propriedades avançadas do atributo chave do grupo Autonumber.
Com a propriedade "Enable" se define a geração automática da numeração na tabela associada. Isto só afeta as criações/reorganizações da base de dados.
Com a propriedade "Star", configura-se a partir de quê número começa a numeração automática e com a propriedade "Step" configura-se o incremento do campo (entre dois registros).

Aplica-se em chaves compostas?
Não, aplica-se unicamente quando o atributo é, em si mesmo, chave de uma tabela. Não se aplica para chaves compostas nem atributos secundários. Por exemplo, para o caso da autonumeração de um segundo nível deve-se utilizar a rule serial ou um procedimento de numeração.

A propriedade é válida em procedimentos?
Sim, é válida em todos os objetos que permitem ingresso de dados (transações e procedimentos) tanto com interface Win como Web. Suporta as linguagens .NET, C/SQL, Visual Basic, Visual Fox Pro, Java e todos os manipuladores de base de dados exceto dbf.

Como verificar se a propriedade é levada em conta?
Como comentávamos a propriedade é válida em criação, reorganização, portanto na análise de impacto de criação/reorganização se despreendem advertências (warnings) quando a propriedade autonumber é ignorada.
Nos casos que se designa a propriedade a um campo que não é primary key, a mensagem é AutoNumbe=True ignored. Attribute %1 is not table %2's primary key.
também adverte se não está implementado no manipulador de base de dados, neste caso a mensagem é: AutoNumber=True ignored for attribut %1. Autonumbering is not supported in this DBMS.

Como obter o valor da nova chave ao dar de alta registros num procedimento?
No caso de ter uma transação com a seguinte estrutura:
AttId*
AttDsc
onde AttId é N(6) e tem a propriedade autonumber em True.

e um procedimento com o código:

new
Attdsc = &Attdsc
endnew

Para obter o número chave deve-se referenciar o atributo. AttId imediatamente depois do EndNew. Deve-se levar em conta que isto pode afetar a navegação do procedimento.

Como se implementa?
Nem todos os DBMS oferecem o mesmo suporte para poder implementar esta funcionalidade. A informação detalhada da implementação em cada manipulador pode ser útil para o administrador da Base de Dados referir-se ->s Release Notes.

Exemplo
Pode-se obter um exemplo em
http://www.gxopen.com.uy/hproject.asp?122 

Relacionado
De GeneXus 8.0 RC: Grades colapsáveis
Seleção em grades web
De GeneXus 8.0 RC: Cláusula option distinct
Novos parceiros acadêmicos no Brasil!