REVISIÓN: Campos numéricos de Oracle deben se convierten para pruebas de lógicas

Seleccione idioma Seleccione idioma
Id. de artículo: 178043 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Síntomas

Cuando utiliza un campo numérico de Oracle se produce un error "Coinciden los tipos".

Se produce el error en los dos escenarios siguientes:

  • Cuando realice una prueba lógica comparar un campo numérico de Oracle con un valor entero. El siguiente es un ejemplo:
          If Oracle_Recordset("my_numeric_field")=1 then ...
    - o bien -

  • Cuando se realizan operaciones aritméticas de enteros con un campo numérico de Oracle. El siguiente es un ejemplo:
         x=Oracle_Recordset("my_numeric_field")+ 1 

Causa

Las dos condiciones siguientes producen este comportamiento:
  • Almacenar datos de entero en un numéricos de Oracle tipo campo de datos.
  • Utilizando el valor del campo numérico de Oracle en los cálculos con tipos de datos Integer.
Oracle no tiene un tipo de datos entero, sólo numérico. El problema es que tipos numéricos son datos con escala y precisión exacta y deben convertirse a otro tipo de datos comparable a enteros. De punto flotante números son valores aproximados y pueden compararse con enteros sin excepción. Para valores numéricos (o el tipo de datos decimal equivalente y anteriores) si esta conversión no tiene lugar un tipo no coincide el error.

Solución

Las funciones de conversión siguientes devuelven valores que son comparables a enteros:
  • CInt()
  • CLng()
  • CDbl()
  • CSng()
Para obtener la máxima eficacia y flexibilidad, se recomienda la función CLng().

En los escenarios enumerados en los síntomas de sección, realizando los siguientes cambios corregir el problema:
If CLng(Oracle_Recordset("my_numeric_field"))=1 then ...
x=CLng(Oracle_Recordset("my_numeric_field"))+ 1

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

Este problema se corrigió en el SP2 de MDAC 2.1.

Más información

Oracle utiliza un tipo de datos numérico. Si un valor entero se almacena en un campo numérico, algunos controladores ODBC (por ejemplo, Intersolv versión 3.01) devuelve un tipo de datos de punto flotante de precisión doble (es decir, VarType de VBScript de 5); otros controladores (por ejemplo, Microsoft ODBC para Oracle versión 2.73.7269) con más precisión devuelve el tipo de datos numéricos (es decir, VBScript VarType 14). En todos los casos, la propiedad Type de ADO devuelve tipo 131 (es decir, numéricos).

Propiedades

Id. de artículo: 178043 - Última revisión: jueves, 13 de febrero de 2014 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft ActiveX Data Objects 1.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
Palabras clave: 
kbnosurvey kbarchive kbmt kb3rdparty kbado210sp2fix kbbug kbdatabase kbfix kbmdac210sp2fix kbmdacnosweep kboracle kbqfe KB178043 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 178043

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com