Como criar a base de dados de acesso a partir de um script
2 answers
Para a aplicação que cria a base de dados, adicionei a referência COM "Microsoft ADO Ext. 2.8 para o DDL e a segurança". O código é realmente bastante simples: (substituir "teste.mdb " com o caminho de arquivo adequado para o seu arquivo.)
Dim cat As ADOX.Catalog = New ADOX.Catalog()
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Jet OLEDB:Engine Type=5")
Para executar os scripts, criei um simples analisador para ler e executar "Access scripts". Estes scripts são baseados em scripts SQL, em que eles fornecem uma lista de comandos para executar. Por exemplo, um script pode ser definido como:
--Create the table.
CREATE TABLE [Test] ([ID] Number, [Foo] Text(255))
--Add data to the table.
INSERT INTO [Test] ([ID], [Foo]) VALUES (1, 'Bar')
Aqui está o código para o analisador. (Substituir " teste.mdb " com o caminho de arquivo adequado para o seu arquivo.)
Dim textStream = File.OpenText(scriptPath)
Dim lines As List(Of String) = New List(Of String)
While textStream.Peek() <> -1
lines.Add(textStream.ReadLine())
End While
textStream.Close()
Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb")
connection.Open()
For Each line As String In lines
If Not String.IsNullOrEmpty(line) Then
If Not line.StartsWith("--") Then
Dim dbCommand = New OleDb.OleDbCommand(line, connection)
dbCommand.ExecuteNonQuery()
End If
End If
Next
connection.Close()
Esta solução funciona bem e foi muito simples de implementar.
É possível criar uma base de dados de acesso por código, com instruções DDL de manipulação de objetos ADO ou DAO.
Duvido que o código DDL T-SQL possa ser de qualquer utilidade para criar uma base de dados de acesso: muitas instruções não serão entendidas no acesso, desde tipos de Campos a Índices e restrições.
Uma opção seria usar as ligações do ADODB para ligar tanto à base de dados SQL original como à recém-criada base de dados Access (ver proposta #HansUp), e usar o ADOX Modelo De Objecto. Poderá então " ler "a base de dados SQL (ou seja, o catálogo ADOX) e os seus objectos e recriar objectos com propriedades "semelhantes" do lado do acesso: tabelas, campos, índices, relações, etc.
Algo similar poderia ser feito com o modelo objeto Dao, mas acho que será mais fácil com o ADOX.Outra opção seria verificar se softwares existentes podem fazer o truque. EMS SQL Manager é uma opção.