Recibirá un mensaje de error "Los datos no coinciden los tipos" al establecer la propiedad ControlSource de un cuadro combinado o un cuadro de lista a un tipo de campo de fecha en Visual FoxPro

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): 156550
Síntomas
En Microsoft Visual FoxPro, si establece la propiedad ControlSource de un cuadro combinado o un cuadro de lista a un tipo de campo de fecha, recibirá el siguiente mensaje de error en tiempo de ejecución:
Error con ComboName-Valor: Tipo de datos incorrecto. Desenlazando objeto ComboName
Causa
Cuadros combinados y cuadros de lista controlan los tipos de datos sólo caracteres numéricos y Null. Otros tipos de campo generan un mensaje de error cuando se ejecuta el formulario.
Solución
Para evitar este problema, utilice una instrucción SELECT de SQL para crear una matriz, en lugar de establecer la propiedad ControlSource de un cuadro o lista toa fecha tipo campo de cuadro combinado. Utilice la matriz en la propiedad OrigenDeLaFila (RowSource) del cuadro de lista combinado o de cuadro. La función DTOC() cambia el tipo de datos de fecha de ejemplo Character.For, para corregir el ejemplo que se describe en la sección "Pasos para reproducir el comportamiento", puede utilizar el código siguiente en el methodof de inicialización del formulario:
   SELECT DTOC(order_date) FROM orders INTO ARRAY adates   THISFORM.combo1.RowSource=THISFORM.combo1.RowSource				
En el evento Valid del cuadro combinado o el cuadro de lista, utilice una instrucción de reemplazar, en lugar de la propiedad OrigenDelControl (ControlSource) , se coloca el valor en el othertable:
   REPLACE employee.hire_date WITH CTOD(THISFORM.combo1.Value)				
La función CTOD() convierte la selección en un tipo de datos Date.
Estado
Este comportamiento es por diseño.
Más información
Objetos de cuadro de lista y cuadro combinado no controlan todos los tipos de datos en la propiedadOrigenDelControl (ControlSource) . La propiedad OrigenDelControl (ControlSource) de un objeto de cuadro de lista o de cuadro combinado puede contener sólo los tipos de datos de caracteres, numéricos o Null.

Pasos para reproducir el comportamiento

  1. Crear un formulario. Nombre de la prueba de formulario.
  2. Colocar las tablas de empleados y pedidos de la base de datos Testdata en el entorno de datos del formulario. TESTDATA se encuentra en la carpeta Vfp\Samples\Data.

    Nota: En Visual FoxPro 6.0, los datos de ejemplo se encuentran en la carpeta de Visual Studio\Common\Samples\Data \\Program Files\Microsoft.
  3. Agregue un cuadro combinado o cuadro de lista al formulario y establezca las siguientes propiedades:
          ControlSource=employee.hire_date      RowSource=orders.order_date      RowSourceType=Fields						
  4. Ejecutar el formulario. Recibe un mensaje de error.
kbdsd VFoxWin

Propiedades

Id. de artículo: 156550 - Última revisión: 04/23/2016 01:18:00 - Revisión: 5.0

Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft Visual FoxPro 5.0 Standard Edition, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft Visual FoxPro 7.0 Professional Edition, Microsoft Visual FoxPro 8.0 Professional Edition, Microsoft Visual FoxPro 9.0 Professional Edition

  • kbmt KB156550 KbMtes
Comentarios