USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Campo Autonumeração access
Everton Nog
SANTA CRUZ DO RIO PARDO
SP - BRASIL
ENUNCIADA !
Postada em 13/05/2008 19:48 hs            
Tenho um Objeto data control, no formulario em q estou fazendo estes testes, mas não vejo no que isso possa influenciar.....aqui continua não dando certo....

Grato a todos

Alguem tem uma idéia?
   
Treze
não registrado
ENUNCIADA !
Postada em 13/05/2008 20:37 hs   
Colega eu não utilizo o objeto datacontrol, veja como criar todo o banco de dados DAO
 
primeiro vá em Project/References e selecione Microsoft DAO 3.6 Object Library  para criar banco de dados acces 2000 e XP, o Microsoft DAO 3.51 Object Library é para Access 97
 
feito isso cole este código no load do seu form
 
Private Sub Form_Load()
Dim Teste As Database
Dim testeTd As TableDef
Dim TesteFlds(1) As Field
Dim IdxFlds As Field
Dim TesteIdx As Index
 
Set Teste = CreateDatabase("C:Dados.mdb", dbLangGeneral)
Set testeTd = Teste.CreateTableDef("Teste")
Set TesteFlds(0) = testeTd.CreateField("Codigo_ID", dbLong)
TesteFlds(0).Attributes = dbAutoIncrField 'torna o campo autonumero.
Set TesteFlds(1) = testeTd.CreateField("Nome", dbText)
TesteFlds(1).Size = 40
' Anexa todos os campos a coleção table
testeTd.Fields.Append TesteFlds(0)
testeTd.Fields.Append TesteFlds(1)
' Cria um índice e define as propriedades para os campos .
Set TesteIdx = testeTd.CreateIndex("Codigo_ID")
TesteIdx.Primary = True
TesteIdx.Unique = True
' Cria os campos necessários para o índice e define as propriedades.
Set IdxFlds = TesteIdx.CreateField("Codigo_ID")
' Anexa os campos a coleção fields do índice
TesteIdx.Fields.Append IdxFlds
' Anexa todos os índices a coleção indexes da tabela
testeTd.Indexes.Append TesteIdx
' Anexa a tabela a coleção tables do banco de dados
Teste.TableDefs.Append testeTd
End Sub
 
 
                   
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 13/05/2008 21:29 hs            
Agora baseado no seu código faça estas alterações para que seja incluida uma nova tabela com um campo autonumérico, no banco de dados já existente.
 
Dim WRK As Workspace
Dim DB As Database
Dim TB As New TableDef
Dim Fields(1) As Field ' criei field em um vetor pois torna a programação mais fácil

Set WRK = DBEngine.Workspaces(0)
'Abre o banco de dados:
Set DB = WRK.OpenDatabase(app.path & "\Dados.mdb")
'Atribui nome e utras propriedades à tabela e aos campos:
TB.Name = "NomeTabela"
' repare que adiferença está sendo na hora de criar os campos
Set Fields(0) = TB.CreateField("Codigo", dbLong)
Fields(0).Attributes = dbAutoIncrField 'cria o autonum
  
TB.Fields.Append Fields(0)
DB.TableDefs.Append TB
DB.Close
WRK.Close

 

Por Favor faça o teste e diga se era isto que queria


TÓPICO EDITADO
 
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 14/05/2008 02:17 hs         
Dim wsp As Workspace
Dim dbTemp As Database
Dim gtdfTableDef  As TableDef
Dim fld As DAO.Field      'local field structure
Dim i As Integer
CommonDialog1.ShowOpen
arq = CommonDialog1.FileName
Set wsp = DBEngine.CreateWorkspace("MainWS", "Admin", "")
Set gwsMainWS = wsp
Set dbTemp = gwsMainWS.OpenDatabase(arq, 0, 0, "")
Set gdbCurrentDB = dbTemp
Set gtdfTableDef = gdbCurrentDB.CreateTableDef()
gtdfTableDef.Name = txtTableName.Text
 

  'get a fresh field object
  Set fld = gtdfTableDef.CreateField()
  'fill the field structure
  With fld
    .Name = txtFieldName.Text
    .Type = dbLong
      .Required = -1
          .Attributes = .Attributes Or dbAutoIncrField
  End With
 
  'try to append the field
  gtdfTableDef.Fields.Append fld
'append the tabledef
  gdbCurrentDB.TableDefs.Append gtdfTableDef
  dbTemp.Close
  wsp.Close
 
  Exit Sub
OkayErr:
  Debug.Print Err & "  " & Err.Description
   
Everton Nog
SANTA CRUZ DO RIO PARDO
SP - BRASIL
ENUNCIADA !
Postada em 14/05/2008 09:57 hs            
Obrigado a todos,

Treze seu codigo era exatamente o que eu precisava. Caiu como uma luva. Agora meu sistema vai finalmente poder ter atualizações automaticas.

Valew a todos
   
Página(s): 2/2     « ANTERIOR  

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página