Abrindo Base de dados.


Veremos como abrir e fechar uma base de dados padrão Microsoft JET ( access ) , usaremos como exemplo a Biblio.mdb.

Abrindo a base de dados em modo compartilhado

DAO

Dim db as DAO.Database

Dim db = DBEngine.OpenDatabase ("c:\Biblio.mdb" )

............... fechando a base

db.close

ADO

Dim cnn As new ADODB.Connection

cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source = C:\Biblio.mdb;"

..................fechando a base

cnn.Close

A novidade aqui fica por conta da string Connection , ela neste exemplo tem duas partes: o descritor Provider que indica qual provedor OLE DB estamos usando e o descritor Source que indica qual base de dados abrir.

No código usando a DAO fica implícito que a base de dados é uma base de dados Microsoft JET , mas com a ADO temos que especificar que queremos abrir uma base de dados Microsoft Jet.

Abrindo a base de dados em modo exclusivo e somente para leitura

DAO

Dim db as DAO.Database

Dim db = DBEngine.OpenDatabase ("c:\Biblio.mdb , False , True)

............... fechando a base

db.close

ADO

Dim cnn As new ADODB.Connection

cnn.Mode = adModeRead

cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source = C:\Biblio.mdb;"

..................fechando a base

cnn.Close

Aqui a propriedade Mode do objeto Connection foi definida usando a constante adModeRead como somente para leitura.

Poderiamos ter escrito o código em uma única linha :

Dim cnn As new ADODB.Connection

    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & _

        "Data Source=C:\nwind.mdb;Mode=" & adModeRead

..................fechando a base

cnn.Close

Aqui a propriedade Mode foi escrita como parte da string Connection para o método Open e não como uma propriedade do objeto Connection.

Na ADO você pode definir as propriedades do objeto Connection também como fazendo parte de uma string de conexão.

Abrindo a base de dados protegida com uma senha

DAO

Dim db as DAO.Database

Dim db = DBEngine.OpenDatabase ("c:\Biblio.mdb , False , False, _

";pwd = senha ")

............... fechando a base

db.close

ADO

Dim cnn As new ADODB.Connection

    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & _

        "Data Source=C:\biblio.mdb;Jet OLEDB:Database Password=password;"

..................fechando a base

cnn.Close

A propriedade Jet OLEDB:Database Password define a senha da base de dados

Abrindo a base de dados protegida com uma senha a nível de usuário.

Abrindo uma base de dados que usa o arquivo de informação de grupo de trabalho : sysdb.mdw.

DAO

    Dim wks As DAO.Workspace

    Dim db As DAO.Database

    DBEngine.SystemDB = "c:\sysdb.mdw"

    Set wks = DBEngine.CreateWorkspace("", "Admin", "password")

    Set db = wks.OpenDatabase("c:\Biblio.mdb")

ADO

    Dim cnn  As New ADODB.Connection

    cnn.Provider = "Microsoft.Jet.OLEDB.3.51"

    cnn.Properties("Jet OLEDB:System database") = "c:\sysdb.mdw"

    cnn.Open "Data Source=c:\nwind.mdb;User Id=Admin;Password=password;"

Neste exemplo a propriedade da conexão - connection - Jet OLEDB:System database, especifica o arquivo de segurança do sistema.
Observe que a propriedade Provider é definida como uma propriedade do objeto Connection e não como parte de um argumento da ConnectionString para o método Open.
O motivo é que antes de você referenciar propriedades para o provedor específico de uma coleção Properties do objeto Connection é necessário indicar qual provedor você esta usando. Se omitirmos a primeira linha de código , ocorrerá o erro 3265 (adErrItemNotFound).
A linha que define o arquivo de segurança pode ser omitida se você usar o arquivo atual do Microsoft Jet WorkGroup definido no arquivo de registro do windows, na chave SystemDB.

Acessando base de dados externas

Vejamos como acessar uma planilha do Excel (c:\teste.xls) .. Podemos acessar praticamente qualquer fonte de dados usando os drivers ISAM.

DAO

    Dim db As DAO.Database

    Set db = DBEngine.OpenDatabase("C:\Teste.xls", False, False, "Excel 8.0;")

...................

    db.Close

ADO

    Dim cnn As New ADODB.Connection

    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & _

        "Data Source=C:\Sales.xls;Extended Properties=Excel 8.0;"

...........................

    cnn.Close

O tipo da fonte de dados é especificada na propriedade Extended Properties do objeto Connection .
Vejamos a seguir uma tabela com as strings para especificar a base externa ISAM que se deseja abrir:
Database String
dBASE III dBASE III;
dBASE IV dBASE IV;
dBASE 5 dBASE 5.0;
Paradox 3.x Paradox 3.x;
Paradox 4.x Paradox 4.x;
Paradox 5.x Paradox 5.x;
Excel 3.0 Excel 3.0;
Excel 4.0 Excel 4.0;
Excel 5.0/Excel 95 Excel 5.0;
Excel 97 Excel 97;
Excel 2000 Excel 8.0;
HTML Import HTML Import;
HTML Export HTML Export;
Text Text;
ODBC ODBC;
DATABASE=database;
UID=user;
PWD=password;
DSN=datasourcename;

retorna