CRIAR TABELA COM CAMPO AUTONUMERACAO

JUNIORARI 17/09/2009 14:07:49
#323116
e ae galera, tudo blz..

tow querendo criar uma tabela com campo autonumeracao,
já vi uns exmeplos aqui do site para criar banco de dados e umas tabelas, mas não vi nenhum que mostrasse como criar com o campo autonumeração...

meu banco de dados é access...

alguem tem um exemplo ae??

valew...
ROBIU 17/09/2009 16:31:02
#323120
Seria assim, com o ADOX:
 .Append [Ô]Codigo[Ô], adInteger
[ô]Tornar o campo Codigo Autonumeração
.Item([Ô]Codigo[Ô]).Properties([Ô]Autoincrement[Ô]) = True


Eu uso esta function para gerar o BD com autonumeração:


Private Function CriarBD() As Boolean
[ô]Criar uma nova instância das Classes adodob e adodx
Set Con = New ADODB.Connection
Set Cat = New ADOX.Catalog
Set Tbl = New ADOX.Table
[ô]Criar uma instância do FSO
Set FSO = New FileSystemObject
[ô]Definir o caminho e o nome do MDB
Caminho = App.Path & [Ô]\Dados.mdb[Ô]
If FSO.FileExists(Caminho) Then
CriarBD = False
[ô]Se o arquivo existir, vc pode renomeá-lo com o Fso, se quiser
[ô]FSO.CopyFile Caminho, App.Path & [Ô]\ArquivoMdb2.mdb[Ô]
[ô]FSO.DeleteFile (Caminho)
[ô]Neste Caso, removemos a mensagem e o exit sub
Exit Function
Else
[ô]Criar o Bd
CriarBD = True
Cat.Create [Ô]Provider=Microsoft.Jet.OleDB.4.0;Data Source=[Ô] & Caminho [ô]C:\Teste.mdb[Ô]
End If
[ô]Abrir o Bd
Con.Open [Ô]Provider=Microsoft.Jet.OleDB.4.0;Data Source=[Ô] & Caminho
[ô]Definir a Conexão ativa
Cat.ActiveConnection = Con
[ô]Criar a Tabela
Tbl.Name = [Ô]MyTabela[Ô]
Set Tbl.ParentCatalog = Cat

[ô]Criar os Campos
With Tbl.Columns

.Append [Ô]Codigo[Ô], adInteger
[ô]Tornar o campo Codigo Autonumeração
.Item([Ô]Codigo[Ô]).Properties([Ô]Autoincrement[Ô]) = True
.Append [Ô]Id[Ô], adInteger, 2 [ô]Campo Tipo Integer, Tamanho 2
.Append [Ô]Ano[Ô], adVarWChar, 4 [ô]Tipo Text Tamanho 4
.Append [Ô]DataI[Ô], adDate, 10 [ô] Tipo Data tamanho 10
.Append [Ô]DataF[Ô], adDate, 10

[ô]Observe que existe tipos de campo que não funciona com tabelas .mdb

End With
[ô]Para Finalizar
Cat.Tables.Append Tbl
[ô]Também é importante [Ô]destruir[Ô] as variáveis dos objetos
Con.Close
Set Con = Nothing
Set Cat = Nothing
Set Tbl = Nothing

[ô]Aqui vamos informar que a operação foi concluída
MsgBox [Ô]Arquivo .mdb criado no diretório [Ô] & Chr(13) & Caminho
End Function


Para usar esta função, declarar as variáveis:

Option Explicit
Dim FSO As FileSystemObject

Dim Con As ADODB.Connection
Dim Rs As Recordset
Dim Cat As ADOX.Catalog
Dim Tbl As ADOX.Table
Dim Col As ADOX.Column

Para mais informações Click no link: Criando Banco Access com o Adox
JPAULO101 17/09/2009 16:32:20
#323121
Se for bd Access, ao criar suas tabelas, você pode colocar o primeiro campo como AutoNumeração, a cada registro que é adcionado ele criar um código automático. Caso queira fazer via código ao gravar um registro pode ser dessa maneira.

Private Sub Gerar_Codigo()

Dim NovoId As String

With rs
If rs.BOF = True And rs.EOF = True Then
NovoId = 1
Else
rs.MoveLast
Novod = rs!Codigo + 1
End If
txtCódigo.Text = Format(NovoId, [Ô]0000[Ô])

End With
End Sub

Abraços.
LANCECOM 17/09/2009 17:10:28
#323129
Conn.Execute [Ô]CREATE TABLE nfe_registradas( Cdgi autoincrement,[Ô] _
& [Ô]pathN varchar(255),[Ô] _
& [Ô]num_nota varchar(30),[Ô] _
& [Ô]cnpjD varchar (50),[Ô] _
& [Ô]destinatario varchar(100), [Ô] _
& [Ô]Data date)[Ô]
Conn.Execute [Ô]ALTER TABLE nfe_registradas ADD PRIMARY KEY (Cdgi)[Ô]
JUNIORARI 17/09/2009 18:24:42
#323138
ROBIU,

cara, eu ja tinha visto esse artigo ae do maccorati, tentei fazer do jeito que vc falow, mas ta dando esse erro:

[Ô]O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado[Ô]

o meu código:

    With tbl
.Name = [Ô]LoginUsuarios[Ô]
[ô]cria campos e os anexa a coleção columns
With .Columns
.Append [Ô]Cod[Ô], adInteger
.Item([Ô]Cod[Ô]).Properties([Ô]Autoincrement[Ô]).Value = True
.Append [Ô]CodUsuario[Ô], adInteger
.Append [Ô]Usuario[Ô], adVarWChar
.Append [Ô]Data[Ô], adDate
.Append [Ô]HoraEntrada[Ô], adDate
.Append [Ô]HoraSaida[Ô], adDate

End With
End With



mas continua dando o mesmo erro....

alterei algumas coisas pra do jeito que vc falou, ficou assim:

  tbl.Name = [Ô]LoginUsuarios[Ô]
Set tbl.ParentCatalog = cat

[ô]Criar os Campos
With tbl.Columns

.Append [Ô]Cod[Ô], adInteger
.Item([Ô]Cod[Ô]).Properties([Ô]Autoincrement[Ô]).Value = True
.Append [Ô]CodUsuario[Ô], adInteger
.Append [Ô]Usuario[Ô], adVarWChar, 55
.Append [Ô]Data[Ô], adDate
.Append [Ô]HoraEntrada[Ô], adDate
.Append [Ô]HoraSaida[Ô], adDate

End With
[ô]Para Finalizar
cat.Tables.Append tbl
[ô]Também é importante [Ô]destruir[Ô] as variáveis dos objetos

Set cat = Nothing
Set tbl = Nothing

ROBIU 18/09/2009 09:42:57
#323180
Manda seu projeto ou posta o código completo, pois o erro não ocorre nesta parte que você informou. robiu@hotmail.com
JUNIORARI 29/09/2009 23:27:39
#324024
e ae galera, valew pelas respostas.
consegui resolver o problema. era so na hora de abrir o banco.
eu estava abrindo assim:

Provider=Microsoft.Jet.OleDB.4.0;Data Source=[Ô] & Caminho

eu mudei e não sei porque deu certo, ficou assim agora:

Provider=Microsoft.Jet.OleDB.4.0;DataSource=[Ô] & Caminho & [Ô];[Ô]

isso mesmo, só um ponto e vírgula no final.....

são coisas de VB.....
Tópico encerrado , respostas não são mais permitidas