Para uns vai demorar mais para outros demorar menos , mas , em se tratando de aplicações comerciais o ambiente cliente/servidor está cada vez mais próximo da realidade de muitas empresas. Não é a toa que a Microsoft vem reduzindo a cada dia a distância que separa o Access do SQL Server . O Access 2000 trouxe ferramentas que tornam a migração Access - SQL Server menos traumática.
Ao migrar seus dados do Access para o SQL Server, com o Access 2000 você tem duas opções . Nas versões anteriores só lhe restava uma opção - usar ODBC para vincular as tabelas do SQL Server ao seu banco de dados Access. Com o Access 2000 , além da solução já citada você pode tirar proveito do Access Project (.adp) usando OLE DB. Enquanto que na primeira opção o código VBA permanece no formato DAO necessitando uma adaptação na segunda opção você precisa modificar o código para o formato ADO.
O Access Project (.adp)
Vamos falar um pouco sobre este novo personagem ou melhor vamos passar a palavra para a Microsoft :
"Um projeto do Microsoft Access (.adp) é um novo tipo de arquivo do Access que fornece acesso eficaz e em modo nativo a um banco de dados do Microsoft SQL Server através da arquitetura de componente OLE DB. Utilizando um projeto do Access, você pode criar um aplicativo cliente/servidor tão facilmente quanto um aplicativo de servidor de arquivos. Esse aplicativo cliente/servidor pode ser uma solução tradicional baseada em formulários e relatórios, uma solução baseada na Web usando páginas de acesso a dados ou uma combinação das duas."
Trabalhar com um projeto do Access é muito semelhante a trabalhar com um banco de dados do Access. O processo de criação de formulários, relatórios, páginas de acesso a dados, macros e módulos é praticamente o mesmo usado para criar um banco de dados do Access.
Uma vez que você se conecta a um banco de dados do SQL Server, pode exibir, criar, modificar e excluir tabelas, modos de exibição, procedimentos armazenados e diagramas de banco de dados usando o Microsoft SQL Server Design Tools, as mesmas ferramentas de estrutura usadas no Microsoft Visual Interdev e no Microsoft Visual Basic. Embora a interface de usuário para trabalhar com esses objetos de banco de dados seja diferente dos objetos de banco de dados equivalentes no banco de dados do Access, ela também é bastante amigável. Um projeto do Access também contém vários dos assistentes de um banco de dados do Access como, por exemplo, o Assistente de formulário, o Assistente de relatório e o Assistente de página, que você pode usar para criar com rapidez um protótipo ou aplicativo simples.
As suas principais características são:
O que é o MSDE?
Ainda com a palavra a Microsoft:
MSDE é uma nova tecnologia que fornece armazenamento de dados local compatível com o Microsoft SQL Server 7.0. Você também pode usar o MSDE como uma solução de armazenamento de dados remota. Pense no MSDE como um mecanismo de dados cliente/servidor alternativo ao mecanismo de banco de dados do Microsoft Jet do servidor de arquivos. O MSDE é executado no Microsoft Windows NT 4.0 ou posterior e no Windows 95 ou posterior. É estruturado e otimizado para uso em sistemas computacionais menores como, por exemplo, um computador de usuário único ou um servidor de grupo de trabalho pequeno.
Uma vez que o MSDE se baseia no mesmo mecanismo de dados do SQL Server, a maioria dos projetos do Microsoft Access ou dos aplicativos cliente/servidor é executada em versões inalteradas. Entretanto, diferente do SQL Server 7.0, o MSDE possui um limite de tamanho de banco de dados de 2 gigabytes, não oferece suporte Symmetrical Multiprocessing (SMP) no Windows 95 ou posterior, e, quando usa replicação Transacional, não pode ser um editor de replicação (embora possa agir como um assinante de replicação).
Adaptando o código DAO para usar com tabelas vinculadas do SQL Server
A seguir temos a sintaxe usada no Access e que precisa ser modificada para funcionar com as tabelas vinculadas no SQL Server:
Access (sintaxe a modificar) |
SQL Server |
dbOpenTable |
dbOpenDynaset, dbOpenDynamic ou dbOpenSnapshot |
Seek, method |
Use uma consulta SELECT com uma condição WHERE no método OpenRecordset |
Updatable, property |
Verifique se o seu SQL Server possui uma chave primária ou índice único para estar apto a atualizar os dados. |
Adaptando o código DAO para o ADO.
O modelo do objeto DAO é diferente do modelo do objeto ADO . Vejamos a seguir a equivalência , quando existir, entre os objetos e coleções dos dois modelos :
DAO ( Jet) |
ADO |
DBEngine |
N/A |
Errors |
Errors |
Workspaces |
N/A |
Databases |
Connections |
Users |
N/A |
Groups |
N/A |
Containers |
N/A |
QueryDefs |
Commands |
Recordsets |
Recordsets |
Relation |
N/A |
TableDefs |
N/A |
Fields |
Fields |
Parameters |
Parameters |
Documents |
N/A |
Banco de dados e Conexão
A seguir as modificações que você deve realizar nos objetos de referência a banco de dados para transformá-los em conexões ADO.
DAO (Jet) |
ADO |
Dim Db As Database |
Dim Cn as New ADODB.Connection |
-Set Db = DBEngine(0)(0) |
-Set cn = Application.CurrentProject.Connection |
O objeto Recordset
Os recordsets são fundamentais para acessar dados de uma tabela, uma visão , uma consulta ou um procedimento armazenado. O comportamento deste objeto é muito diferente quando usado via DAO se comparado com a ADO. Vejamos a seguir as diferenças de código existentes: (Lembre-se que os valores padrões para abertura de um recordset são muito diferentes entre a DAO e ADO )
DAO (for Jet) |
ADO |
Dim Rs as Recordset |
Dim Rs as New ADODB.Recordset |
Set Rs = Db.OpenRecordset(Source, Type, Option, Locking) |
Rs.Open Source, Connection, Type, Locking, Option |
Source : |
Source : |
Type : |
Type : |
Locking : |
Locking : |
Opções : |
Opções: |
Propriedades: |
Propriedades: |
Métodos: |
Métodos : |
Os objetos Command e QueryDef
Enquanto a DAO utiliza o objeto QueryDefs a ADO usa o objeto Command. Vejamos a seguir como adaptar o código para estes casos;
DAO (for Jet) |
ADO |
Dim Qd As QueryDef |
Dim Cm as New ADODB.Command |
Set Qd = Db.QueryDefs("MyQuery") |
Cm.CommandText = "SQL Query or Stored Procedure" |
Propriedade: |
Propriedade: |
Método : |
Método : |
Dim Pa as Parameter |
Dim Pa as New ADODB.Parameter |
Qd.Parameters(Name) = value |
Set Pa = Cm.CreateParameter (Name,
Type, Direction) Ou Cm.Parameters.Refresh |
Property: |
Property: |
Diferenças Estruturais de dados
Os arquivos de banco de dados do access 97/2000 possuem seis tipos de objetos: tabelas, consultas, formulários, relatórios, macros e módulos. ( O Access 2000 possui o objeto Páginas ). Um banco de dados SQL Server possui : tabelas, visões (View) , procedimentos armazenados (stored procedure), defaults, rules e tipos definidos pelo usuário. Abaixo uma tabela comparativa da equivalência entre os objetos dos dois banco de dados:
Access |
SQL Server |
Table |
Table |
Index |
Index |
Query |
View ou Stored Procedure |
Form, Report |
N/A |
Macro, Module |
Stored Procedure |
N/A |
Trigger |
N/A |
Default, Rules |
Tabelas - Access e SQL Server
Ao utilizar o Assistente de Migração para migrar as tabelas do Access para o SQL Server ocorrem algumas alterações. Para compreendê-las você precisa ententer as diferenças entre as tabelas nos dois ambientes. Vejamos a seguir estas diferenças
Structures |
Access |
SQL Server |
Field name |
From 1 to 64 characters |
From 1 to 128 characters |
Characters . ! ` [ and ] não são permitidos |
Todos os caracteres Unicode sao permitidos |
|
Data Types |
Text |
Varchar, nvarchar |
Memo |
Text, ntext |
|
Byte |
Tinyint |
|
Integer |
Smallint |
|
Long Integer |
Int |
|
Simple |
Real |
|
Double |
Float |
|
Replication ID |
Varbinary, uniqueidentifier |
|
Decimal |
Numeric, decimal |
|
Date/Time |
Datetime, smalldatetime |
|
Money |
Money |
|
AutoNumber |
Int (Identity) |
|
Yes/No |
Bit |
|
OLE Object |
Image |
|
Hyperlink |
Text, ntext |
|
Description |
Standard in the table structure |
With Microsoft Repository |
Field properties |
Field Size |
Length |
Format |
CHECK constraint, RULE |
|
Input Mask |
N/A |
|
Caption |
N/A |
|
Default value |
DEFAULT Constraint, DEFAULT |
|
Validation Rule |
CHECK constraint, RULE |
|
Validation Text |
N/A |
|
Required |
Allow Nulls |
|
Allow Zero Length |
CHECK constraint, RULE |
|
Indexed |
Creating an index |
|
Unicode Compression |
N/A |
|
Decimal places |
N/A |
|
Precision |
Precision |
|
Scale |
Scale |
|
N/A |
Identity Seed |
|
N/A |
Identity Increment |
|
Relations |
Apply Referential Integrity |
FOREIGN KEY constraint |
Cascading update |
Trigger (or SQL 2000) |
|
Cascading delete |
Trigger (or SQL 2000) |
|
Graphical relationships |
Database diagram |
Consultas
Embora o assistente de migração do Access 2000 tente transformar as consultas em Visões ou Procedimentos armazenados quando você migra para um arquivo de projeto do Microsoft Access (.adp) As consultas permanecem inalteradas. Vejamos a seguir a correspondência no SQL Server das consultas do Access:
Access |
SQL Server |
Select query without parameter |
View or stored procedure |
Select query with parameter |
Stored procedure |
Crosstable query |
View |
Update query |
Stored procedure |
Insert query |
Stored procedure |
Delete query |
Stored procedure |
Create table query |
Stored procedure |
Union query |
View |
SQL Pass-through query |
View or Stored procedure |
DDL query |
Stored procedure |
O grande problema na migração das consultas é devido as funções VBA usadas. Uma função VBA não pode ser usada em consultas do SQL Server. Se uma função VBA for utilizada em um Select você deve deixá-la no Access. Se a função VBA for usada em uma cláusula Where você deverá transformá-la em Transact-SQL.
Hasta la vista , ...;-)
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: