Published on

June 28, 2000

Adaptando Dados do Access para o SQL Server no SQL Server

Ao migrar dados do Access para o SQL Server, existem algumas opções disponíveis, dependendo da versão do Access que está sendo usada. Com o Access 2000, você tem a opção de vincular as tabelas usando ODBC ou utilizar o novo arquivo de projeto do Access (.adp) com OLE-DB. Para versões anteriores do Access, a única opção é vincular as tabelas usando ODBC.

Se você optar por vincular as tabelas usando ODBC, seu código Access-VBA permanecerá em DAO (Data Access Objects), mas precisará ser adaptado para as tabelas vinculadas. Por outro lado, se você decidir usar o arquivo de projeto do Access, seu código DAO precisará ser modificado para usar ADO (ActiveX Data Objects).

Ao adaptar o código DAO Access para usar tabelas vinculadas do SQL Server, existem algumas diferenças de sintaxe que precisam ser abordadas. A tabela a seguir descreve a sintaxe do Access que não funcionará com tabelas vinculadas do SQL Server e fornece as modificações necessárias:

Sintaxe do Access (para modificar)SQL Server
dbOpenTabledbOpenDynaset, dbOpenDynamic ou dbOpenSnapshot
Método SeekUse uma consulta SELECT com uma condição WHERE no método OpenRecordset
Propriedade UpdatablePode ter um valor diferente com uma tabela SQL Server e uma tabela Access. Verifique se o seu SQL Server tem uma chave primária ou um índice único para poder atualizar os dados.

A adaptação do código DAO Access para ADO requer o entendimento das diferenças entre os dois modelos de objetos. As tabelas a seguir descrevem os objetos e coleções equivalentes em DAO e ADO:

DAO (para Jet)ADO
DBEngineN/A
ErrorsErrors
WorkspacesN/A
DatabasesConnections
UsersN/A
GroupsN/A
ContainersN/A
QueryDefsCommands
RecordsetsRecordsets
RelationN/A
TableDefsN/A
FieldsFields
ParametersParameters
DocumentsN/A

No que diz respeito aos objetos de banco de dados e conexão, as seguintes modificações precisam ser feitas para transformá-los em conexões ADO:

DAO (para Jet)ADO
Dim Db As DatabaseDim Cn as New ADODB.Connection
Set Db = DBEngine(0)(0)Set Cn = Application.CurrentProject.Connection
Set Db = OpenDatabase(Name, Options, ReadOnly, Connection)Cn.Open ConnectionString, IDUser, Password, Options

Os recordsets são a base para ler dados de uma tabela, uma visualização, uma consulta ou um procedimento armazenado. Embora os objetos tenham o mesmo nome em ADO e DAO, existem diferenças significativas. A tabela a seguir descreve as diferenças de código:

DAO (para Jet)ADO
Dim Rs as RecordsetDim Rs as New ADODB.Recordset
Set Rs = Db.OpenRecordset(Source, Type, Option, Locking)Rs.Open Source, Connection, Type, Locking, Option
Source: Nome da TabelaSource: Nome da Tabela e opção adCmdTable
Type: dbOpenTable (padrão)Type: opção adCmdTable
Locking: dbReadOnlyLocking: adLockReadOnly (padrão)

O uso de QueryDefs no Access permite a reexecução de consultas e o uso de parâmetros. O equivalente em ADO é o objeto Command. Veja como fazer a transição de QueryDefs para Commands:

DAO (para Jet)ADO
Dim Qd As QueryDefDim Cm as New ADODB.Command
Set Qd = Db.QueryDefs(“MyQuery”)Cm.CommandText = “SQL Query ou Stored Procedure”

No próximo artigo, forneceremos exemplos de transformações de código para acelerar sua migração e melhorar o desempenho do seu aplicativo.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.