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 ...