CRIAR BANCO DE DADOS VIA CODIGO

RICARDOCENTENO 06/01/2010 13:48:03
#331182
Olá amigos, eu sou usuário intermediário no VB, priciso desenvolver uma aplicação e estou usando o access e DAO3.6 pois não é muito registro é para uma academia e gostaria de saber o seguinte:
A aplicação tem um código que ele checa o banco de dados com relação a existência e tabelas nela contidas eu gostaria de fazer um código assim. Caso o programa não localize o banco de dados o mesmo cria um vazio. Já vi vários exemplos mas o ponto é que algumas tabelas tem relacionamentos ae que eu empaquei. Alguém sabe como criar o banco e as tabelas os tipos de campo (memorando, número, texto de 255 chrs etc, chave primária etc)?

Sem mais.

Grato
MARCOSLING 06/01/2010 14:08:13
#331187
Resposta escolhida
para criar MDB:

Dim wrk As DAO.Workspace
Dim db As DAO.Database

Set wrk = CreateWorkspace([Ô][Ô], [Ô]admin[Ô], [Ô][Ô], dbUseJet)
Set db = wrk.CreateDatabase([Ô]c:\dados.mdb[Ô], dbLangGeneral, dbVersion30)

Atenção para o útimo parêmetro do createdatabase, pois lá vc define a versão do banco de dados

continua...
MARCOSLING 06/01/2010 14:19:21
#331190
para criar tabela:

Dim tb_tmp As DAO.TableDef
Dim db_tmp As DAO.Database
Dim flCampo As DAO.Field

Set db_tmp = OpenDatabase([Ô]c:\dados.mdb[Ô])

Set tb_tmp = New TableDef

set flCampo = New DAO.Field
flCampo.Name = [Ô]cd_cliente[Ô]
flCampo.Type = dbLong
flCampo.Attributes = dbAutoIncrField
tb_tmp .Fields.Append flCampo

set flCampo = New DAO.Field
flCampo.Name = [Ô]nm_cliente[Ô]
flCampo.Type = dbText
flCampo.Size = 60
flCampo.AllowZeroLength = True
tb_tmp .Fields.Append flCampo

set flCampo = New DAO.Field
flCampo.Name = [Ô]ds_observacao[Ô]
flCampo.Type = dbMemo
flCampo.AllowZeroLength = True
tb_tmp .Fields.Append flCampo

tb_tmp.Name = [Ô]cliente[Ô]
db_tmp.TableDefs.Append tb_tmp

continua...
MARCOSLING 06/01/2010 14:21:49
#331192
para criar chave primária:

db_tmp.Execute [Ô]CREATE INDEX PrimaryKey ON cliente (cd_cliente) WITH PRIMARY[Ô]

continua...
MARCOSLING 06/01/2010 14:28:46
#331193
Cria mais uma tabela para estabelecer relacionamento:

Set tb_tmp = New TableDef

set flCampo = New DAO.Field
flCampo.Name = [Ô]cd_cliente[Ô]
flCampo.Type = dbLong
tb_tmp .Fields.Append flCampo

set flCampo = New DAO.Field
flCampo.Name = [Ô]cd_contato[Ô]
flCampo.Type = dbLong
flCampo.Attributes = dbAutoIncrField
tb_tmp .Fields.Append flCampo

set flCampo = New DAO.Field
flCampo.Name = [Ô]nm_contato[Ô]
flCampo.Type = dbText
flCampo.Size = 60
flCampo.AllowZeroLength = True
tb_tmp .Fields.Append flCampo

tb_tmp.Name = [Ô]cliente_contato[Ô]
db_tmp.TableDefs.Append tb_tmp

db_tmp.Execute [Ô]CREATE INDEX PrimaryKey ON cliente_contato (cd_cliente, cd_contato) WITH PRIMARY[Ô]

continua...
MARCOSLING 06/01/2010 14:33:05
#331194
Estabelece relacionamento:

Dim rel As DAO.Relation
Dim fld As DAO.Field

Set rel = db_tmp.CreateRelation([Ô]r01[Ô], [Ô]cliente[Ô], [Ô]cliente_contato[Ô], 4352)

Set fld = rel.CreateField([Ô]cd_cliente[Ô])
fld.ForeignName = [Ô]cd_cliente[Ô]
rel.Fields.Append fld

db_tmp.Relations.Append rel
db_tmp.Relations.Refresh

depois vc mata as variáveis e fecha o banco

Fim
RICARDOCENTENO 06/01/2010 21:50:44
#331249
Caro MARCOSLING obrigado pela contribuição irei testar e ja posto os resultados certo? Grande abraço!!
PACON 16/06/2010 09:46:06
#344961
Obrigado Ricardo, mas preciso exemplo de CREATE DATABASE em VB6 para ADO e Firebird.
AUSTANDER 02/12/2012 19:32:51
#415271
Vc pode fazer assim

Conecta

cnSQL.Execute ([Ô]CREATE TABLE TB(CAMPO1 VARCHAR(10),CAMPO2 NUMERIC(15,2))[Ô])

cnSQL.Close
Tópico encerrado , respostas não são mais permitidas