1-) Como eu posso saber qual versão da DAO minha aplicação esta usando ?
Basta usar o código:
Dim strversao as string
strversao = DBEngine.Version ==> a variável strversao irá conter a versão da DAO utilizada
2-) Qual é a mais nova versão da DAO ?
A última versão atualizada para a DAO é a 3.6 - Microsoft DAO 3.6 Object Library.
3-) Por que a DAO 3.5 não funciona no Windows 95 ?
a-)Você deve copiar o arquivo OLEAUT32.DLL ( 2.20.4054 ou superior) para o diretórios SYSTEM e registrár este arquivo assim:
REGSVR32.EXE OLEAUT32.DLL
b-) Defina um valor para a variável de ambiente TEMP
c-) Você deve ter instalado a livraria EXPSRV.DLL requerida por VBAJET32.DLL.
4-) Quais drivers ISAM DAO estão disponíveis em meu computador ?
Execute o programa REGEDIT.EXE e procure pela seguintes entradas no registro:
MyComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\ISAM Formats => para versão 3.5X
MyComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats => para versão 3.6
abaixo o resultado para a versão presente em minha máquina
5-) Onde conseguir informações sobre a DAO ?
O arquivo DAO35.HLP presente no diretório :
C:\Arquivos de programas\Arquivos comuns\Microsoft Shared\DAO ou
(C:\Program Files\Common Files\Microsoft Shared\DAO) contém um Help em português(parcial) sobre a ADO:
Abaixo alguns links onde você pode obter mais informações sobre a DAO:
microsoft.public.vb.database.dao at msnews.microsoft.com
ACC97: CommitTrans Help Topic Uses dbFlushOSCacheWrites Constant
HOWTO: Redistributing DAO with Your Visual C++ 5.0 Application
PRB: Error "The Jet VBA File... Failed to Initialize When Called"
http://premium.microsoft.com/msdn/library/backgrnd/html/msdn_jetlock.htm
6-) Como criar um novo arquivo de banco de dados Access com a DAO ?
Para criar um banco de dados Access usamos o método CreateDatabase
Dim wrkDefault As Workspace Dim dbNovo As Database Dim prpLoop As Property Set wrkDefault = DBEngine.Workspaces(0) ' Verificar se já não existe o arquivo. If Dir("NovoDB.mdb") <> "" Then Kill "NovoDB.mdb" ' Cria um novo banco de dados Encriptado. Set dbNovo = wrkDefault.CreateDatabase("NovoDB.mdb", dbLangGeneral, dbEncrypt) With dbNovo Debug.Print "Propriedades de " & .Name ' Enumera as propriedades do novo Banco de dados criados. For Each prpLoop In .Properties If prpLoop <> "" Then Debug.Print " " & prpLoop.Name & " = " & prpLoop Next End With dbNovo.Close |
notas:
dbLangGeneral é valido para : Inglês,Alemão,
Francês, Português, Italiano ,e Espanhol
Para o Russo a constante é dbLangCyrillic
, para o Arabé é dbLangArabic , etc...
As constantes possíveis são:
Constante | Descrição |
dbEncrypt | Encripta o banco de dados |
dbVersion10 | Cria um banco de dados no formato Microsoft Jet 1.0 |
dbVersion20 | Cria um banco de dados no formato Microsoft Jet 2.0 |
dbVersion30 | Cria um banco de dados no formato Microsoft Jet 3.0 |
dbVersion40 | Cria um banco de dados no formato Microsoft Jet 4.0 |
7-) Como compactar um banco de dados Access usando a DAO
Para compactar um banco de dados Access usamos o método CompactDatabase
Dim dbNovo As Database 'abre o banco de dados da versão 2.0 do Jet Set dbsNorthwind = OpenDatabase("Nwind20.mdb") ' verifica se já existe o arquivo com o nome que vamos usar If Dir("Nwind30.mdb") <> "" Then Kill "Nwind30.mdb" ' Compacta , encripta e altera a versão do Jet 2.0 para versão 3.o do Jet DBEngine.CompactDatabase "Nwind20.mdb", "Nwind30.mdb", , dbEncrypt + dbVersion30 Set dbNovo = OpenDatabase("Nwind30.mdb") |
Obs: Para um arquivo protegido com senha use o seguinte código:
DBEngine.CompactDatabase "Nwind20.mdb", "Nwind30.mdb", , dbEncrypt + dbVersion30
,";pwd=Senha"
Leia também o artigo : Compactando um banco de dados - DAO e ADO
8-) Quais as limitações de um banco de dados da versão MS Access 97 - Versão 3.5X ?
- Tamanho máximo do arquivo mdb => 1GB
- Número máximo de objeto em um banco de dados => 32768
- Comprimento máximo para o nome de um objeto => 64
- Comprimento da Senha => 14
- Comprimento máximo para nomes de usuários e grupos => 20
- Número máximo de usuários conectados ao banco de dadaos => 255
- Comprimento máximo do registro => 2048
- Número máximo de campos na tabela => 255
- Número máximo de transações aninhadas => 7
9-) Como visualizar as tabelas existentes em um banco dados Access usando DAO ?
Dim db AS DAO.Database Dim Tabela AS DAO.TableDef
Set db = DBEngine.OpenDatabase("c:\teste\biblio.mdb")
For Each tabela in db.TableDefs List1.additem Tabela.Name Next |
Lista todas as tabelas e as consultas ( incluse tabelas do sistema) exibindo-as em uma caixa de listagem |
10-) Como criar um tabela usando ADO ?
Dim db AS DAO.Database Dim Tabela AS DAO.TableDef
Set db = DBEngine.OpenDatabase("c:\teste\biblio.mdb")
'Vamos criar um novo objeto tabela : a tabela Clientes Set Tabela = db.CreateTableDef("Clientes")
With Tabela 'vamos criar os campos no objeto TableDef e depois adicionar o objeto Tabela coleção de tabelas 'A sintaxe é : CreateField(nome_do_campo, tipo_de_dados, tamanho_campo) .Fields.Append .CreateField("Nome", dbText, 50) .Fields.Append .CreateField("Endereco", dbText , 50) .Fields.Append .CreateField("Telefone", dbText, 50) End With
'agora inclua a nova tabela no banco de dados db.TableDefs.Append Tabela db.Close |
Cria a tabela Clientes no banco de dados Biblio.mdb com três campos: Nome, Endereco e Telefone |
11-) Como criar um índice usando DAO ?
Dim db AS DAO.Database Dim Tabela AS DAO.TableDef Dim Indice AS DAO.Index
Set db = DBEngine.OpenDatabase("c:\teste\biblio.mdb") Set Tabela = db.TableDefs("Clientes")
'cria o objeto Index e inclui o objeto Field Nele: O nome do índice será NomeIdx Set Indice=Tabela.CreateIndex("NomeIdx") Indice.FieldsAppend Indice.CreateField("Nome")
'Inclui o objeto na coleção de índices Tabela.Indexes.Append Indice db.Close |
Cria o índice NomeIdx para o campo Nome na tabela Clientes do banco de dados Biblio.mdb |
12-) Como criar um consulta usando DAO ?
Dim db AS DAO.Database Dim Consulta AS DAO.QueryDef
Set db = DBEngine.OpenDatabase("c:\teste\biblio.mdb")
'cria a consulta TodosNomes Set Consulta = db.CreateQueryDef("TodosNomes","Select * From Clientes") db.Close |
Cria a consulta de nome TodosNomes no banco de dados Biblio.mdb que retorna todos os registros da tabela Clientes |
13-) Fechando todos os objetos de banco de dados abertos .
Para fechar todos os objetos DAO (recordsets, databases, Workspaces) antes de sair da sua aplicação ponha o código abaixo no evento Unload do formulário de saida:
Private Sub Form_Unload(Cancel As Integer) On Error Resume Next ' Dim ws As Workspace Dim db As Database Dim rs As Recordset ' For Each ws In Workspaces For Each db In ws.Databases For Each rs In db.Recordsets rs.Close Set rs = Nothing Next db.Close Set db = Nothing Next ws.Close Set ws = Nothing Next ' End Sub |
14-) Criando uma chave primária em um banco de dados Access via Código.
O codigo abaixo abre o arquivo Biblio.mdb e cria a chave primária para o campo Codigo da tabela Clientes dando a ela o nome de CodigoID.
Private Sub CriaChavePrimaria() Dim dbDatabase As Database Dim dbOpened As Database Dim DatabasePath as string Dim PrimaryKey As New Index ' abre o banco de dados DatabasePath = "c:\diretorio\arquivo.mdb" ' aqui voce informa o caminho e o nome do seu banco de dados Set dbOpened = OpenDatabase(DatabasePath, False, False ) Set dbDatabase = dbOpened Set dbOpened = Nothing ' Inclui a chave primária BeginTrans PrimaryKey.Name = "CodigoID" PrimaryKey.Fields = "Codigo" PrimaryKey.Unique = True PrimaryKey.Primary = True dbDatabase.TableDefs("Clientes").Indexes.Append PrimaryKey DoEvents CommitTrans dbDatabase.close Set dbDatabase = Nothing End Sub |
15-) Como criar um banco de dados e depois tabelas e campos ?
Abaixo o código que recebe o caminho e nome do banco de dados a criar e logo apos criar o arquivo MDB cria uma tabela chamada Exemplo com dois campos : Nome e Endereco.
Private Sub CriaDB(sDBCaminho As String) Dim tdExemplo As TableDef Dim fldNome As Field Dim fldEndereco As Field Dim dbDatabase As Database ' Define o novo banco de dados ( nome e caminho) ' Cria um arquivo .MDB vazio Set dbDatabase = CreateDatabase(sDBCaminho, dbLangGeneral, dbEncrypt) ' Cria uma nova tabela chamada Exemplo Set tdExemplo = dbDatabase.CreateTableDef("Exemplo") ' Inclui campos na tabela. Set fldNome = tdExemplo.CreateField("Nome", dbText, 20) Set fldEndereco = tdExemplo.CreateField("Endereco", dbText, 20) ' Inclui os campos no objeto TableDef tdExemplo.Fields.Append Nome tdExemplo.Fields.Append Endereco ' Salva as definições na colecao TableDefs dbDatabase.TableDefs.Append tdExemplo MsgBox "Arquivo MDB criado com sucesso ! " End Sub |
16-) Como criar um campo autonumeração em um tabela de um banco de dados Access ?
Para criar um campo Autonumeração , devemos criar um campo do tipo Long e , usando a propriedade Attributes definir a propriedade dbAutoinc...
17-) Como conseguir informações sobre a DAO ?
A Knowledge Base da Microsoft traz uma relação de artigos sobre correções , problemas, exemplos, etc... Vale a pena consultar. Abaixo damos uma relação de links da Knowledge Base relacionados com a DAO:
Até o próximo artigo.
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Programando o sistema de segurança do Access - Macoratti ...