Dicas do OsmarJr

Criando um campo Autonumeração por código


Temos dois métodos para criar um campo Autonumeração por meio de código. Um requer a execução de uma declaração SQL DDL "Create Table", e a outra usa um Append em VBA para incluir um flag dbAutoIncrField na propriedade Atributos do campo.

Autores: Dev Hashish

Parq a criação por meio de consulta DDL, veja este artigo.

Para criar o campo usando VBA e DAO, use esta função:

 

'  ********* Início do Código ***********
'  Este código foi escrito originalmente por by Dev Ashish
' Ele não deve ser alterado ou distribuído,
' exceto como parte de um aplicativo.
' Use-o livremente em qualquer aplicativo,
' desde que esta nota de copyright permaneça inalterada.
'
' Código cortesia de 
' Dev Ashish
'
Function fCreateAutoNumberField( _
                ByVal strTableName As String, _
                ByVal strFieldName As String) _
                As Boolean
'
'   Cria um campo Autonumeração com nome = strFieldName
'   na tabela strTableName.
'
'   Aceita
'       strTableName:   Nome da tabela onde vai ser criado o campo
'       strFieldName:   Nome do novo campo
'   Returns 
'       Verdadeiro se bem sucedido, Falso se não
'

On Error GoTo ErrHandler
Dim db As DAO.Database
Dim fld As DAO.Field
Dim tdf As DAO.TableDef

    Set db = Application.CurrentDb
    Set tdf = db.TableDefs(strTableName)
    '   Primeiro cria o campo com tipo de dados = Inteiro longo
    Set fld = tdf.CreateField(strFieldName, dbLong)
    With fld
        '   Acrescentar dbAutoIncrField a Atributos
        '   diz ao Jet que é um campo Autonumeração
        .   Attributes = .Attributes Or dbAutoIncrField
    End With
    With tdf.Fields
        .Append fld
        .Refresh
    End With
    
    fCreateAutoNumberField = True
    
ExitHere:
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
    Exit Function
ErrHandler:
    fCreateAutoNumberField = False
    With Err
        MsgBox "Erro" & .Number & vbCrLf & .Description, _
            vbOKOnly Or vbCritical, "CreateAutonumberField"
    End With
    Resume ExitHere
End Function
'  ********* Final do Código ***********
Home

Contato | Copyright©Osmar José Correia Júnior | 24-Nov-2005 18:23
Hosted by www.Geocities.ws

1