Problema "Type Mismatch"

Estoy desarrollando una aplicación en Visual Basic y todo marchaba bien hasta que la instalé en un Pc cliente, cuando presiono el teclado sobre la grilla (Producto Spread 3.1) o al asignar ciertos datos, me arroja el error # 13 "Type Mismatch" que tiene referencia con asignación incorrecta a variable de un tipo determinado, sin embargo supongo que controlo correctamente cada conversión razón por la cual en mi Pc no me arroja ese error. Tengo que setear alguna opción en el VB, se deberá acaso a instalación cliente, ¿o qué?... Agradeceré cualquier ayuda ya que debido a este problema no he podido entregar mi trabajo.
Respuesta
1
Como estas.
Me gustaría saber que paso con el problema que tenias.
Si lograste solucionarlo te pido el favor de entrar a finalizar y calificar la repuesta.
Hola edgaray, no he contestado porque esperaba recibir el aviso de una nueva respuesta a mi correo pero algo paso, hoy entre y agradezco tu respuesta, probare lo que me aconsejas pero te adelanto que verifique la configuración del PC cliente en lo que tiene que ver con fecha y hora sin embargo no lo he hecho con la moneda.
Suponiendo que ese fuera el problema, se supone que debo configurar siempre los Pcs clientes para poder instalar mi aplicación, hay alguna forma de controlar esto, porque en ciertos casos la configuración puede afectar a los propósitos de otras aplicaciones o a los intereses del usuario.
.. he pensado, como es la primera vez que instalo utilizando el programa "Setup Generator Pro" (No sé si lo ubicas), es posible que algo se inataló mal, sin embargo pienso que nada tiene que ver porque el error no es de falta de Dll o mala instalación de archivos, me cambié a este programa para hacer el instalador porque el del VB me dio muchos problemas al tratar de instalar mi sistema en Pcs con versiones de Windows diferentes.
Descuida si sé algo nuevo te cuento, y estaré esperando cualquier averiguación de parte tuya también y este fin de semana voy a hacer pruebas con la configuración regional.
La verdad yo cada vez que hago una instalación cuadro la configuarción de la máquina del cliente, y se le explica el porque. Nunca he tenido problema donde mis clientes por hacer esto.
No se si exista alguna forma de de controlarlo, investigaré y si encuentro algo te comento, de igual forma si tu encuentras algo al respecto me cuentas y hay nos vamos ayudando.
Suerte.
Tienes razón en lo que comentas, ese error es porque no pudo convertir un tipo de dato a otro, o porque al hacer una operación se esta utilizando variables o datos que no coinciden.
Por ejemplo, si tengo una variable tipo variant y le asigno una operación:
variable=a +b
Si a contiene datos tipo string y b contiene datos numéricos se genera un error.
Pero bueno, lo raro del cuento es que en tu máquina funcione bien y en la otra donde instalaste no.
Puede pasar algo y es que la configuración regional tanto para fechas como para número sea diferente entre tu maquina y la maquina cliente.
Esto puede hacer que no funcione bien las conversiones, tanto para los números como para las fechas, es diferente que tu tengas separador de miles la "," y en la otra máquina la tenga definida como el ".", ya que cuando tu formateas un valor el resultado puede cambiar.
Mira si esto es lo que pasa, compara la configuración regional de la maquina cliente contra la tuya.
Si no es esto me comentas y vemos que más puede ser.
Suerte.
L_Tapia, como vas, que ha pasado con el error que te genera la aplicación.
Disculpa por no haber respondido antes, sí, efectivamente solucioné el problema y te cuento que en realidad tenía que ver con lo que tú y yo pensábamos, es decir problemas al convertir datos de fecha, pero no era sencillo identificar el error ya que en una consulta a la base Sql (en el servidor de mi cliente), obtengo una fecha con formato 106, algo como "01 Jan 2003", por estar la version Sql en Ingles el mes Enero = Jan, pero como el Pc cliente o el VB con el que desarrollé la aplicación está en español, al tratar de recuperar el año con format$(MIfecha,"yyyy") producía el error, realize pruebas y si la fecha decía "01 Ene 2003" me entregaba "2003", ahora en mi Pc no se producía el error porque mi Pc era también mi servidor y tanto el Sql como el Windows están en español. Lo solucioné rescatando la fecha en formato 105 que me devuelve: "16-10-2003".
Agradezco tu interés y en realidad tu ayuda no pudo ser más precisa debido a que no te explicaba en detalle la conversión que estaba realizando.

1 respuesta más de otro experto

Respuesta
1
¿Te aseguraste de poner el tipo de variable en cada una de ellas?, ¿No querrás convertir algún número en letra o viceversa?, checa el código que eso debe ser lo que está fallando.
Te aseguro que las conversiones de fecha las reviso perfectamente, las numéricas creo que también, por algo algo en mi Pd funciona sin problemas. En VB podemos seleccionar la acción interceptar los errores no interceptables, tambi'en lo hice y nada.
Intenta poniendo...
Herramientas-Opciones-requerir declaración de variables
Si no es eso, no tengo idea que pueda ser amigo.
ReVo
Hola Experto. Te cuento que solucioné el problema, y efectivamente estaba como se suponía en la conversión de datos, sin embargo el error se producía cuando traía datos del servidor que tiene Sql en Inglés, y esto afecta el formato de fecha cuando se trata del siguiente:
select convert(Char(20), FEC_MOD_MOV, 106)
from movimiento (nolock)
.. en este caso el resultado sería:
"01 Jan 1900"
... y el problema se me presentaba cuando dentro de mi aplicación visual quería extraer el año de esta fecha de la variable wData(2,0):
Me.lbl_FechaUltMod = IIf(Format$(
wData(2, 0), "yyyy") > 1900, wData(2, 0), "")
, como en el Pc cliente tengo windows en español
el resultado de Format$(wData(2,0), "yyyy") es
"01 Jan 1900" y no "1900", razón por la cual cuando pregunto si es mayor a 1900 se cae, pero si la cadena fuera "01 Ene 1900" realiza correctamente la conversón. Me costó tanto encontrar el error debido a que había probado con otras fechas y no hay problema con "Sep", "Nov",
"Feb" y otras y en tal caso no hay diferencias.
Finalizo la pregunta y otorgo una buena nota por el interés que pusiste en contestar mi pregunta, y también porque no te dí suficientes antecedentes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas