ACCESS Tips - Campo Auto Numérico - Creating an AutoNumber field from code - VBA, DAO, DDL e SQL


Existem 2 caminhos para acrescentarmos um campo cujo o conteúdo seja autonumerado:

Um dos modos é fazê-lo através do comando SQL DDL Create Table, e o outro é o modo como abordaremos neste artigo usando VBA e DAO para adicionar um campo em uma tabela pré-existente.

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

A função abaixo, desenvolvida por Dev Ashish, serve para efetuar tal ação em qualquer tabela na qual tenhamos a necessidade de inserirmos um campo numerado.

Function fCreateAutoNumberField (ByVal strTableName As String, ByVal strFieldName As String) As Boolean
    Dim db As DAO.Database
    Dim fld As DAO.Field
    Dim tdf As DAO.TableDef

    On Error GoTo ErrHandler

    Set db = Application.CurrentDb
    Set tdf = db.TableDefs(strTableName)
    
    '   Primeiro criamos um campo com o tipo = Long Integer
    Set fld = tdf.CreateField(strFieldName, dbLong)
    
    With fld
        '   Adicionamos o dbAutoIncrField para efetuar chamadas ao Jet que sozinho efetuará a autonumeração do campo
        Let .Attributes = .Attributes Or dbAutoIncrField
    End With
    
    With tdf.Fields
        .Append fld
        .Refresh
    End With
    
    Let fCreateAutoNumberField = True
    
ExitHere:
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
    Exit Function
ErrHandler:
    Let fCreateAutoNumberField = False
    
    With Err
        MsgBox "Erro: " & .Number & vbCrLf & .Description, _
            vbOKOnly Or vbCritical, "CreateAutonumberField"
    End With

    Resume ExitHere
End Function


Ei, Ok! tudo bom, tudo legal, mas e quanto a primeira opção? Não chorem, coloquei-a mais abaixo:

Para criar uma tabela com um campo com AutoNumeração e PrimaryKey, além de um campo chamado MyText com o tipo TEXTO e comprimento de 10, insira a instrução a seguir na janela de consulta de definição de dados e, em seguida, executar a consulta.

CREATE TABLE Table1 _
(Id COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, _
MyText TEXT (10))


Tags: VBA, autonumber, increment, Dev Ashish, counter

Nenhum comentário:

Postar um comentário

diHITT - Notícias