CRIAR CAMPO EM BD ACCESS 2003

SACOFRITO 18/07/2011 17:26:11
#379478
Como faço para criar um campo com determinado tipo num bd access 2003 com DAO.

Ja tenho a tabela, preciso acrescentar um campo nela sem ter que abrir o bd e criar na mao.
Obrigado
MARCELO.TREZE 18/07/2011 18:09:15
#379485
veja se esta função te ajuda, faz tempo que não mexo com DAO, mas tinha esta função perdia por aqui


Global DB As Database
[ô]
Global REG_cli As Recordset
Global TB_cli As TableDef
Global FD_cli As Field
Global IX_cli As Index
[ô]
[ô] 2ª Tabela
[ô]
Global REG_arq As Recordset
Global TB_arq As TableDef
Global FD_arq As Field
Global IX_arq As Index

Public Sub CriaTabelas()
Set TB_cli = DB.CreateTableDef([Ô]tbclientes[Ô]) [ô] cria a tabela com nome [Ô]tbclientes[Ô]
Set FD_cli = TB_cli.CreateField([Ô]codigo[Ô], dbText): vzclientes (0) [ô] cria o campo [Ô]codigo[Ô](autonumeração)e não permite que seza vazio
Set FD_cli = TB_cli.CreateField([Ô]nome[Ô], dbText): vzclientes (1) [ô]cria o campo [Ô]nome[Ô] já permite que seja vazio
[ô]
[ô] O código a seguir cria uma chave primária na 1ª tabela
[ô]
DB.TableDefs.Append TB_cli
Set IX_cli = TB_cli.CreateIndex([Ô]idxclientes[Ô])
Set FD_cli = IX_cli.CreateField([Ô]codigo[Ô]) [ô] isto indica que o campo [Ô]codigo[Ô] sera a chave primaria
IX_cli.Fields.Append FD_cli
IX_cli.Primary = True
TB_cli.Indexes.Append IX_cli
[ô]
[ô] Criando a 2ª tabela
[ô]
Set TB_arq = DB.CreateTableDef([Ô]tbarquivo[Ô]) [ô] cria a tabela com nome [Ô]tbArquivo[Ô]
Set FD_arq = TB_arq.CreateField([Ô]codigo[Ô], dbText): vzarquivo (0) [ô] cria o campo [Ô]codigo[Ô](autonumeração)e não permite que seza vazio
Set FD_arq = TB_arq.CreateField([Ô]Data[Ô], dbText): vzarquivo (1) [ô]cria o campo [Ô]Data[Ô] já permite que seja vazio
Set FD_arq = TB_arq.CreateField([Ô]nr_documento[Ô], dbText): vzarquivo (1) [ô]cria o campo [Ô]Nr_Documento[Ô] já permite que seja vazio
Set FD_arq = TB_arq.CreateField([Ô]cod_pasta[Ô], dbText): vzarquivo (1) [ô]cria o campo [Ô]Cod_Pasta[Ô] já permite que seja vazio
Set FD_arq = TB_arq.CreateField([Ô]Assunto[Ô], dbMemo): vzarquivo (1) [ô]cria o campo [Ô]Assunto[Ô] já permite que seja vazio
[ô]
[ô] O código a seguir cria uma chave primária na 2ª tabela
[ô]
DB.TableDefs.Append TB_arq
Set IX_arq = TB_arq.CreateIndex([Ô]idxarquivo[Ô])
Set FD_arq = IX_arq.CreateField([Ô]codigo[Ô]) [ô] isto indica que o campo [Ô]codigo[Ô] sera a chave primaria
IX_arq.Fields.Append FD_arq
IX_arq.Primary = True
TB_arq.Indexes.Append IX_arq
End Sub
[ô]
[ô] A função a seguir controla se o campo poderá ficar vazio ou não
[ô]
Function vzclientes(opc As Integer)
If opc = 1 Then
FD_cli.Required = True
FD_cli.AllowZeroLength = True
End If
TB_cli.Fields.Append FD_cli
End Function
MGALDINO 18/07/2011 20:39:35
#379497
Resposta escolhida
Amigo acredito que sua pergunta é mais simples.

ALTER TABLE TABELA ADD COLUMN CAMPO VARCHAR(20)

ALTER TABLE TABELA ADD COLUMN CAMPO INT

Como voce esta usando DAO deve ter uma variavel do Tipo DataBase.

Dim StrSql as String

StrSql = [Ô]ALTER TABLE TABELA ADD COLUMN CAMPO VARCHAR(20)[Ô]
DB.execute StrSql


Acho que era isso que voce precisa.
SACOFRITO 19/07/2011 08:53:02
#379515
MGALDINO, obrigado sua resposta foi a mais conveniente ao meu problema.

Na verdade eu fiz este comando alter table e criei um campo texto.. fiz assim

db.execute [Ô]alter table devolucoes add column vendedor text[Ô]

Se alguem tiver algum site ou algumas dicas de como melhorar isto? Estou afim de fazer um [Ô]eXezinho[Ô] pra criar campos. Mas preciso saber como criar os campos e alterar suas propriedades. Tipo colocar a propriedade indexado como [Ô]sim, duplicação autorizada[Ô]
Se alguem souber ou tiver uma página ensinando isso me mande por MP


Obrigado aos outros que ajudaram.
Tópico encerrado , respostas não são mais permitidas