Você está na página 1de 4

Um aplicativo ADO no executado em sistemas operacionais de nvel inferior aps recompil-lo...

ID do artigo: 2517589 - ltima reviso: quinta-feira, 14 de julho de 2011 - Reviso: 2.0

Um aplicativo ADO no executado em sistemas operacionais de nvel inferior aps recompil-lo em um computador que esteja executando o Windows 7 SP 1 ou Windows Server 2008 R2 SP 1 ou que tem o KB983246 instalado
Clique aqui para exibir o artigo traduzido e o artigo original em ingls, lado a lado. Exibir Aviso de Iseno de Traduo Automtic a Cuidado ADO e ADO MD no foram totalmente testados em um Mic rosoft.Ambiente do NET Framework. Eles podem c ausar problemas intermitentes, espec ialmente em aplic ativos baseados em servio ou em aplic ativos multithread. As tc as disc nic utidas neste artigo s devem ser usadas c omo medida temporria durante a migrao para o ADO.NET. Voc s deve usar essas tc as aps voc realizaram testes c nic ompletos para c ertific ar-se de que no h nenhum problema de c ompatibilidade. No h suporte para quaisquer problemas c ausados por usando ADO ou ADO MD dessa maneira. Para obter mais informaes, c onsulte o seguinte artigo na Base de dados de Conhec imento da Mic rosoft: 840667 (http://support.mic rosoft.c om/kb/840667/ ) Voc rec eber erros inesperados ao usar o ADO e ADO MD em um.Aplic ativo do NET Framework

Sintomas

Considere o seguinte c enrio. Em um c omputador que esteja exec utando o Servic Pac 1 (SP1) do Windows 7 ou Windows e k Server 2008 R2 SP 1 ou que tenha KB9823246 instalado, voc pode rec ompilar um aplic ativo do Mic rosoft Ac tiveX Data Objec (ADO) usando um dos seguintes aplic ts ativos: Mic rosoft Visual C++ De Visual Basic for Applic ations da Mic rosoft (VBA) Visual Basicde Mic rosoft 6 Mic rosoft.NET applic ations

Nesse c enrio, voc ac que o aplic har ativo no exec utado em sistemas operac ionais de nvel inferior. Por exemplo, no exec utado na verso de lanamento do Windows 7, o Windows Vista e verses anteriores do Windows. Dependendo da implementao, voc rec ebe uma mensagem de erro semelhante a uma das seguintes opes. (Voc pode rec eber outras mensagens de erro). Mensagem de erro 1 REGDB_E_CLASSNOTREG (0X80040154)

Mensagem de erro 2 E_POINTER (0X80004003)

Mensagem de erro 3 E_NOINTERFACE (0X80004002)

Mensagem de erro 4 No possvel c onverter o objeto COM do tipo 'System.__ComObjec para o tipo de interfac ' ADODB.Conexo '. t' e Esta operao falhou porque a c hamada QueryInterfac no c e omponente COM para a interfac c IID '{00001550e om 0000-0010-8000-00AA006D2EA4}' falhou devido ao seguinte erro: nenhuma interfac suportada (exc e eo de HRESULT: 0x80004002 (E_NOINTERFACE)). "

O seguinte segmento de c digo do Visual C++ replic esse problema. a #import " msado15.dll" no_namespace rename("EOF","EndOfFile") int main() { CoInitialize(NULL); _ConnectionPtr pConnection = NULL; HRESULT hr = pConnection.CreateInstance(__uuidof (Connection)); //hr gets E_NOINTERFACE here }

O seguinte Visual Basic for Applic ations o segmento de c digo replic esse problema. a Private Sub Form_Load() Dim Conn As New ADODB.Connection Runtime error here: Class does not support Automation or does not support expected interface End Sub

Erro do VBA:Erro de tempo de exec uo '430': c lasse no oferec suporte a automao ou no oferec suporte a interfac e e e esperada Observao A Mic rosoft no suporta mais o assembly de interoperabilidade primria do ADO e no suporta mais de Visual Basic 6. Para obter mais informaes sobre a c apac idade de suporte Visual Basic 6, visite a seguinte pgina da Web do MSDN: Suporte dec larao de Visual Basic6.0 no Windows Vista, Windows Server 2008 e Windows 7
(http://msdn.mic rosoft.c om/en-us/vbasic /ms788708.aspx)

Para obter mais informaes sobre o assembly de interoperabilidade primria para a c apac idade de suporte do ADO, c lique no nmero abaixo para ler o artigo na Base de dados de Conhec imento da Mic rosoft:

http://support.microsoft.com/kb/2517589

Um aplicativo ADO no executado em sistemas operacionais de nvel inferior aps recompil-lo...

318559 (http://support.microsoft.com/kb/318559/ ) Usando o assembly de interoperabilidade primrio para o ADO ADODB () em Visual Studio.NET

Causa

Esse problema ocorre porque algumas interfaces ADO foram alteradas no SP1 do Windows 7 a ser associado a novos identificadores de instncia (IIDs). As interfaces IID antigas foram atribudas o sufixo a seguir: _Deprecated Por exemplo, a interface _Connection foi atualizado da seguinte maneira: No Windows 7 e verses anteriores do Windows, a IID de _Connection 00000550-0000-0010-8000-00AA006D2EA4. No SP1 do Windows 7, a IID de _Connection 00001550-0000-0010-8000-00AA006D2EA4 e a IID para _Connection_Deprecated 00000550-0000-0010-8000-00AA006D2EA4. Se seu aplicativo usa a vinculao antecipada para _Connection, o novo IID armazenado no aplicativo binrio durante a compilao. Isso causa um erro quando o aplicativo executado em um sistema operacional de baixo nvel porque a IID no existe. Algumas APIs do ADO so dependentes da plataforma no ADO 2.7 e em verses posteriores. Em verses de 64 bits do Windows, essas APIs ADO processar argumentos usando um tipo de dados de 64 bits (como o LONGLONG tipo de dados). No entanto, os aplicativos que usam essas APIs ainda usam o LONGO tipo de dados. Portanto, voc recebe uma mensagem de erro "Tipo incompatvel" ao tentar executar a macro.

Como Contornar

Para contornar esse problema, use um dos seguintes mtodos.

Mtodo 1
Para contornar esse problema para aplicativos do Visual C++, aplicativos de Visual Basic 6 e Microsoft.NET applications, siga estas etapas. Anotae s Mtodo 2 no se aplica a VBA para aplicativos. O arquivo do Access compilado (*.mde ou *.accde) tem que ler o arquivo typelib baixado (. tlb) em tempo de execuo e improvvel que o arquivo baixado. tlb estar presente nos computadores de usurio final. Para fazer o download de arquivos, v at a subseo "Downloads" nesta seo.

Para computadores de 32 bits


1. Baixe o Msado60_Backcompat_i386.tlb para um diretrio local (por exemplo, C:\temp). 2. Copie o arquivo baixado para um diretrio distribudo. Por exemplo: C:\temp\Msado60_Backcompat_i386.tlb "% CommonProgramFiles%\System\ado\Msado60_Backcompat.tlb" 3. Registre o arquivo baixado no sistema. Por exemplo: %windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "% CommonProgramFiles% \System\ado\msado60_Backcompat.tlb" ObservaoAjustar o caminho para regtlbv12.exe se o.NET Framework 4.0 no foi instalado no sistema. 4. Verifique se a seguinte chave do registro foi criada: HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0 5. Verifique se o seguinte valor de registro est apontando para "% CommonProgramFiles% \System\ado\Msado60_Backcompat.tlb" (o caminho do Registro pode ser expandido em um caminho absoluto): HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0\0\win32

AMD 64 computadores
1. Baixe o Msado60_Backcompat_i386.tlb para um diretrio local (por exemplo, C:\temp). 2. Baixe o Msado60_Backcompat_x64.tlb para um diretrio local (por exemplo, C:\temp). 3. Copie os arquivos baixados em um diretrio distribudo. Por exemplo: C:\Temp\Msado60_Backcompat_i386.tlb "% %\System\ado\Msado60_Backcompat.tlb de CommonProgramFiles (x86)" C:\Temp\Msado60_Backcompat_x64.tlb "% CommonProgramFiles%\System\ado\msado60_Backcompat.tlb" 4. Registre os arquivos baixados no sistema. Por exemplo: %windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "% CommonProgramFiles% \System\ado\Msado60_Backcompat.tlb" %windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "% %\System\ado\Msado60_Backcompat.tlb de CommonProgramFiles (x86)"

http://support.microsoft.com/kb/2517589

Um aplicativo ADO no executado em sistemas operacionais de nvel inferior aps recompil-lo...

Observao Ajustar o caminho para regtlbv12.exe se o.NET Framework 4.0 no foi instalado no sistema. 5. Verifique se a seguinte chave do registro foi criada: HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0 6. Verifique se o seguinte valor de registro est apontando para "% CommonProgramFiles(x86) % \System\ado\msado60_Backcompat.tlb" (o caminho do Registro pode ser expandido em um caminho absoluto): HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0\0\win32 7. Verifique se o seguinte valor de registro est apontando para "% CommonProgramFiles% \System\ado\msado60_Backcompat.tlb" (o caminho do Registro pode ser expandido em um caminho absoluto): HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0\0\win64

Para computadores de IA64


Use o mesmo procedimento para os computadores AMD64, mas o download de Msado60_Backcompat_ia64.tlb em vez de Msado60_Backcompat_x64.tlb.

Downloads
Msado60_Backcompat_i386.tlb (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E29BDA0DF02DB3/msado60_Backcompat_i386.tlb)

Msado60_Backcompat_x64.tlb (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E29BDA0DF02DB3/msado60_Backcompat_x64.tlb)

Msado60_Backcompat_ia64.tlb (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E29BDA0DF02DB3/msado60_Backcompat_ia64.tlb)

Para desenvolvedores de C++


1. Substitua a linha 1 a linha 2: 1. #import "msado15.dll" no_namespace rename("EOF","EndOfFile")

2. #import "msado60_Backcompat.tlb" no_namespace rename("EOF","EndOfFile")

2. Recompile o aplicativo.

Para desenvolvedores de Visual Basic 6


1. No menu Project, clique em referncias. 2. Clique para desmarcar a Os objetos de dados do Mic rosoft Ac tiveX * biblioteca e Rec ordset de objetos de dados de Ac tiveX do Microsoft * bibliotec entradas. a 3. Clique para selecionar o Biblioteca de BackCompat de objetos 6.0 Mic rosoft Data de Ac tiveX entrada. 4. Recompile o aplicativo.

Mtodo 2
Voc pode alterar o seu aplicativo para que ele usa a ligao tardia. Por exemplo, voc chamaria as APIs do ADO atravs da interface IDispatch em C++. Observao Essa soluo alternativa no se aplica a Visual Basic for Applications os aplicativos.

Mais Informaes

A seguir est uma lista completa de interfaces que possuem o antigo IID junto com o sufixo "_Deprecated" que adicionado ao nome da interface: Interface: ADORecordsetConstruction Interface: ConnectionEventsVt Interface: _Connection Interface: Connection15 DispInterface: ConnectionEvents Interface: _Command Interface: Command25 Interface: Command15 Interface: campos Interface: Fields20 Interface: Fields15 Interface: campo Interface: Field15 Interface: Field20 Interface: _Parameter Interface: parmetros

http://support.microsoft.com/kb/2517589

Um aplicativo ADO no executado em sistemas operacionais de nvel inferior aps recompil-lo...

Interface: _Record Interface: _ Recordset Interface: Recordset21 Interface: Recordset20 Interface: Recordset15 DispInterface: RecordsetEvents Interface: RecordsetEventsVt Interface: _Stream

A informao contida neste artigo aplica-se a:


Palavras-chave: kbprb kbsurveynew kbprogramming kbtshoot kbmt KB2517589 KbMtpt
Traduo automtica IMPORTANTE: Este artigo foi traduzido por um sistema de traduo automtica (tambm designado por Machine Translation ou MT), no tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicaes (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em portugus a totalidade dos artigos existentes na base de dados de suporte. No entanto, a traduo automtica no sempre perfeita, podendo conter erros de vocabulrio, sintaxe ou gramtica. A Microsoft no responsvel por incoerncias, erros ou prejuzos ocorridos em decorrncia da utilizao dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizaes freqentes ao software de traduo automtica (MT). Obrigado. Clique aqui para ver a verso em Ingls deste artigo: 2517589 (http://support.microsoft.com/kb/2517589/en-us/ )

http://support.microsoft.com/kb/2517589

Você também pode gostar