Autor Tema: [SOLUCIONADO] Error "No coinciden los tipos de datos" al dividir textboxs  (Leído 13877 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Que tal señores, esta vez necesito de su ayuda para realizar la siguiente maniobra  :roll:

tengo en un formulario 3 textbox llamados Text1 y Text2 y Text3 y un boton llamado command1, ahora quiero que en el evento Click del boton el valor que esta en el text1 me lo divida entre el valor del text2 y lo presente en el text3 y a la misma que me lo redondee y me presente el valor entero proximo a la cantidad resultante, por ejemplo:

thisform.text1.value = "650.00"
thisform.text2.value = "154.80"


al dividir los dos textbox resultaria "4.198"

y al redondearlo "4"

y al aproximarlo al entero proximo "5"

y el codigo que tengo es el siguiente:

thisform.text3.value = CEILING(round(thisform.text1.value / thisform.text2.value,1))

pero resulta que al hacer esto me da el siguiente error: "No coinciden los tipos de datos"

que puedo hacer??

NOTA: a cada textbox ya le asigne en las propiedades el valor "0.00"

Gracias de antemano por su valiosa ayuda  :friends:
« Última Modificación: noviembre 12, 2008, 05:21:36 pm por Jarmandaros »
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado mask

  • Sv Member
  • ***
  • Mensajes: 339
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #1 : noviembre 08, 2008, 01:32:14 pm »
y si convertir los valores del text1 y text2 a enteros creo que es con val() y luego haces las otras operaciones  :sad: ademas viendo esos parentesis que tenes como que estan mal colocados revisalos bien  :huh:

thisform.text3.value = CEILING(round(thisform.text1.value / thisform.text2.value,1))
poniendo bien los parentesis seria asi:
el CEILING(round((thisform.text1.value/thisform.text2.value),1)) probalo y luego me contas como te fue  :unsure:
« Última Modificación: noviembre 08, 2008, 01:38:01 pm por mask »

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #2 : noviembre 09, 2008, 12:48:54 am »
y si convertir los valores del text1 y text2 a enteros creo que es con val() y luego haces las otras operaciones  :sad: ademas viendo esos parentesis que tenes como que estan mal colocados revisalos bien  :huh:
poniendo bien los parentesis seria asi:
el CEILING(round((thisform.text1.value/thisform.text2.value),1)) probalo y luego me contas como te fue  :unsure:

Ok, antes que nada, te agradezco por tu respuesta. ahora bien:

1) para convertir a enteros yo uso Int() pero resulta que los decimales son indispensables asi es que no lo puedo convertir a entero.

2) la posiscion de los parentesis esta bien

thisform.text3.value = CEILING(round(thisform.text1.value / thisform.text2.value,1))

round("expresion,"numero de decimales"") es para redondear un numero
ceiling() es para aproximar al entero proximo

por lo tanto seria asi:

CEILING(round(thisform.text1.value / thisform.text2.value,1))

ahora con lo que me aconsejas

CEILING(round((thisform.text1.value/thisform.text2.value),1))

me sigue tirando el mismo error y por probar si los convierto a enteros

CEILING(round(int(thisform.text1.value) / int(thisform.text2.value),1))

me sale el siguiente error


por lo que ahora sigo igual.
« Última Modificación: noviembre 09, 2008, 08:06:14 am por Jarmandaros »
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #3 : noviembre 09, 2008, 06:56:54 am »
¿Para que haces el redondeo si le vas a aplicar ceiling?.

PD: No se que versión usas de Fox, pero por si fuera poco Fox hasta la versión 6 tienen una gran limitante en el Round():
http://support.microsoft.com/?scid=kb%3Ben-us%3B157954&x=9&y=15

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #4 : noviembre 09, 2008, 07:45:31 am »
¿Para que haces el redondeo si le vas a aplicar ceiling?.

PD: No se que versión usas de Fox, pero por si fuera poco Fox hasta la versión 6 tienen una gran limitante en el Round():
http://support.microsoft.com/?scid=kb%3Ben-us%3B157954&x=9&y=15

Buen punto Vlad, estoy utilizando Visual Fox 6.0 y la verdad ni yo se para que queria usar round, si estoy aplicando ceiling, la verdad es que en mi desesperacion no habia caido en cuenta de esto  :dntknow: gracias por alumbrarme  :D

entonces el codigo seria asi:

thisform.text3.value = CEILING(thisform.text1.value / thisform.text2.value)

pero,,,, acabo de descubrir la posible causa de mi problema y es la siguiente:

en el evento INIT del formulario tengo el siguiente codigo:

select renta
sum sueldo to thisform.text1.value

thisform.text2.value = 154.80

thisform.text3.value = CEILING(thisform.text1.value / thisform.text2.value)


y me carga desde la base de datos la cantidad solicitada y me la pone en Text1 y a la vez pongo en Text2 un acantidad especifica. ahora bien, no se de que tipo es entonces el dato que pone en text1 la funcion SUM porque eh tenido que hacer lo siguiente y asi me funciona:

primero he creado un Textbox extra llamado Text4

select renta
sum sueldo to thisform.text1.value

thisform.text2.value = thisform.text1.value

thisform.text3.value = 154.80

thisform.text4.value = CEILING(thisform.text2.value / thisform.text3.value)


y de esta manera SI ME FUNCIONA, pero entonces me quedo con la interrogante de que porque tengo que poner otro textbox e igualar el valor con el primero para que no me de el error de que no coincide el tipo de datos :roll:

ya le ando cerca, espero sus comentarios  :friends:
« Última Modificación: noviembre 09, 2008, 07:47:37 am por Jarmandaros »
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #5 : noviembre 09, 2008, 10:16:18 am »
proba la sugerencia de mask de usar val()

thisform.text4.value = CEILING(val(thisform.text1.value) / val(thisform.text3.value))

jeje la verdad mejor espera a uno de los expertos en Fox :)

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #6 : noviembre 10, 2008, 08:46:55 am »
yo creo que a simple vista tu error es este:
thisform.text1.value = "650.00"
thisform.text2.value = "154.80"

si asignas datos numericos tendrias que hacerlo sin las comias, caso contrario especificas que es texto.

el primer textbox si seria un numerico, ya que lo que haces es una suma.
pero y el segundo ??? de donde o como le asignas ese valor.

si corregis esa asignacion, entonces tu codigo seria solamente:
fox 9.0
thisform.text3.Value = CEILING(thisform.text1.value/thisform.text2.Value)
repuesta 5
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #7 : noviembre 10, 2008, 11:15:02 am »
yo creo que a simple vista tu error es este:
thisform.text1.value = "650.00"
thisform.text2.value = "154.80"

si asignas datos numericos tendrias que hacerlo sin las comias, caso contrario especificas que es texto.

el primer textbox si seria un numerico, ya que lo que haces es una suma.
pero y el segundo ??? de donde o como le asignas ese valor.

si corregis esa asignacion, entonces tu codigo seria solamente:
fox 9.0
thisform.text3.Value = CEILING(thisform.text1.value/thisform.text2.Value)
repuesta 5

para serte sincero lo de las comillas lo puse como muestra pero en realidad no las lleva, pero gracias por la aclaracion.

y como dije antes......

Citar
en el evento INIT del formulario tengo el siguiente codigo:

select renta
sum sueldo to thisform.text1.value

thisform.text2.value = 154.80

thisform.text3.value = CEILING(thisform.text1.value / thisform.text2.value)

y me carga desde la base de datos la cantidad solicitada y me la pone en Text1 y a la vez pongo en Text2 un acantidad especifica.

cuando carga el formulario, en el text1 me suma (SUM) el contenido de un grid para ser exacto, entonces en text2 yo coloco una cantidad especifica (ya corriendo el programa) con la cual quiero que me divida la suma anterior y hai es donde me da el error, la verdad es que no se porque, si en los dos textbox tengo cantidades y los dos con mascara (999,999.00) lo unico que no se es que el dato que pone SUM en el text1 de que tipo es y creo que por ahi anda el error.

Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: Error "No coinciden los tipos de datos" al dividir textboxs en VFox
« Respuesta #8 : noviembre 24, 2008, 11:49:46 am »
para serte sincero lo de las comillas lo puse como muestra pero en realidad no las lleva, pero gracias por la aclaracion.

y como dije antes......

cuando carga el formulario, en el text1 me suma (SUM) el contenido de un grid para ser exacto, entonces en text2 yo coloco una cantidad especifica (ya corriendo el programa) con la cual quiero que me divida la suma anterior y hai es donde me da el error, la verdad es que no se porque, si en los dos textbox tengo cantidades y los dos con mascara (999,999.00) lo unico que no se es que el dato que pone SUM en el text1 de que tipo es y creo que por ahi anda el error.



en algun momento cambias el tipo de datos del textbox seria bueno q pusieras en alguna parte de tu codigo un set step on para ir viendo q valores tiene los textbox otra es q trates con el siguiente codigo

Código: [Seleccionar]

select sum(sueldo) as suma  from  renta into cursor Csuma

thisform.text1.value=Csuma.suma 

cierras el cursor si esta en uso
use in select('Csuma')

thisform.text2.value = 154.80

thisform.text3.value = CEILING(thisform.text1.value / thisform.text2.value)


y revisa q las mascaras de los 3 textbox sean 999,999.99 y no de solo 2