PROBLEMA: VBScript "Tipo incompatível" Erro ao campo tipo é adNumeric

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 306916
Sintomas
Quando você usa Visual Basic Scripting Edition (VBScript) para executar uma comparação numérica ou cálculo em um tipo de campo adNumeric (131), você pode receber as seguintes mensagens de erro:
Erro de tempo de execução Microsoft VBScript '800a000d'
Incompatibilidade de tipo
- e -
Erro de tempo de execução Microsoft VBScript '800a01ca'
Variável usa um tipo de automação não tem suportado no VBScript
Causa
Essas mensagens de erro ocorrem porque o VBScript não pode converter corretamente os valores de adNumeric em um tipo numérico válido.
Resolução
Você pode usar uma das seguintes duas soluções possíveis:
  • Use a função CDbl ou CInt para converter o campo adNumeric .
  • Use o JScript, que não exibe este comportamento.
Situação
Esse comportamento é por design.
Mais Informações

Passos para reproduzir o problema

É possível reproduzir esse comportamento em uma página Active Server Pages (ASP) ou através de um arquivo Visual Basic Script (.vbs) simples. As etapas a seguintes demonstram como reproduzir o problema em um arquivo .vbs simples.

Criar a tabela do Oracle

Execute o seguinte script no servidor Oracle para criar a tabela de exemplo:
DROP TABLE Cust;            CREATE TABLE Cust             (CustID     NUMBER(22,6) PRIMARY KEY,              Name   VARCHAR2(50));            INSERT INTO Cust VALUES(222,'Kent');            INSERT INTO Cust VALUES(333,'Sally');    COMMIT;   / 				

Criar o arquivo VBS

  1. No bloco de notas, crie um novo documento de texto chamado Test.vbs e colá o código a seguir Test.vbs:
         Set oConn = CreateObject("ADODB.Connection")     oConn.open "Provider=MSDAORA;user id=User;" & _     "password=password;data source=Oracle816Server;"     set oRS = oConn.Execute("Select CustID FROM Cust")     MsgBox "Numeric field type is 131." & vbcrlf & _     "Field Type = " & ors.fields("CustID").type      MsgBox "Numeric field * 100 = " & oRS("CustID") * 100    'MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100					
  2. Modificar a seqüência de caracteres de conexão para que ele aponta para o servidor Oracle e fornece um nome de usuário válido e uma senha.
  3. Salve Test.vbs em sua área de trabalho. Você deve receber um aviso de que a alteração da extensão pode tornar o arquivo instável. Clique em OK para continuar. Se você não vir esse aviso, convém garantir que você está mostrando as extensões tipos de arquivo conhecidos.
  4. Feche Test.vbs.
  5. Na sua área de trabalho, clique duas vezes em Test.vbs para executar o código. Você receber a mensagem de erro "Tipo incompatível".

    Solução alternativa

  6. Descomente a seguinte linha de código, que converte o campo adNumeric para um tipo de dados double:
        'MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100					
  7. Comente a linha de código a seguir:
        MsgBox "Numeric field * 100 = " & oRS("CustID") * 100					
  8. Feche e salve Test.vbs.
  9. Na sua área de trabalho, clique duas vezes em Test.vbs para executar o código novamente. Observe que você receberá duas caixas de mensagens e nenhuma mensagem de erro.
800a000d 800a01ca

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 306916 - Última Revisão: 12/03/2003 18:25:00 - Revisão: 3.1

Microsoft Data Access Components 1.5, Microsoft Data Access Components 2.0, Microsoft Data Access Components 2.5, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.7, Microsoft Active Server Pages 4.0

  • kbmt kbprb KB306916 KbMtpt
Comentários