CRIAR BANCO DE DADOS VIA CODIGO
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
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
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...
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...
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...
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...
para criar chave primária:
db_tmp.Execute [Ô]CREATE INDEX PrimaryKey ON cliente (cd_cliente) WITH PRIMARY[Ô]
continua...
db_tmp.Execute [Ô]CREATE INDEX PrimaryKey ON cliente (cd_cliente) WITH PRIMARY[Ô]
continua...
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...
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...
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
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
Caro MARCOSLING obrigado pela contribuição irei testar e ja posto os resultados certo? Grande abraço!!
Obrigado Ricardo, mas preciso exemplo de CREATE DATABASE em VB6 para ADO e Firebird.
Vc pode fazer assim
Conecta
cnSQL.Execute ([Ô]CREATE TABLE TB(CAMPO1 VARCHAR(10),CAMPO2 NUMERIC(15,2))[Ô])
cnSQL.Close
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