Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: RiasChan en 12 Marzo 2018, 02:10 am



Título: Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Publicado por: RiasChan en 12 Marzo 2018, 02:10 am
Eso, tan simple como eso, No entiende la sentencia IF, no anda! ya probe con varias combinaciones y no anda, que puedo hacer?

La idea es la siguiente, yo tengo un stock y un punto de reposicion

Por ejemplo,

Stock 50
Punto de reposición 20

Si yo tengo más de 20, deberia decirme "Stock normal"
si tengo menos de 20, "Faltante de stock"
y si tengo 0 "Sin Stock"

bueno la cosa, es que el IF que hice es este:



Código:
Private Sub Command1_Click()
If Text1.Text = 0 Then
MsgBox "Stock 0 !!!!!"
Else
If Text1.Text > Text2.Text Then
MsgBox "Stock mayor"
Exit Sub
Else
MsgBox "Stock menor"
Exit Sub
End If
End If
End Sub

Pero que rayos, el if no anda! si por ejemplo

en el txt de stock pongo 2
y en el txt de reposicion pongo 10, deberia decirme "Stock menor" ya que hay pocas unidades, hay menos unidades de las que deberia tener para avisarme (10)

Y deberia ponerme "Stock menor", Pero no! me pone stock mayor! y encima eso pasa asi le ponga cualquier numero, mayor o menor a 10, siempre sale por el lado del mayor, WTF?

Seguramente tengo algunos errrores menores en el codigo, pero por que sale por el positivo cuando es negativo?

(https://k50.kn3.net/6AEBD6E47.jpg)


Título: Re: Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Publicado por: engel lex en 12 Marzo 2018, 02:16 am
estás comparando el texto de las cajas, para comparar el valor debes usar Val(Text1.Text)

por otro lado por qué VB6? es decir, ya vb6 se daba como obsoleto cuando entró windows vista... debía morir con XP, deberías aprender VB.NET que es su versión "moderna" que hacer uso de la .NET framework


Título: Re: Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Publicado por: RiasChan en 12 Marzo 2018, 02:23 am
Mi objetivo ahora es terminar este proyecto que tenog colgado desde el 2006 cuando aprendi a programar por 1ra vez... mi 2do objetivo es domnar .net, y si me hace falta, Java. Pero con saber .net y para ampliar sabiduria en otros lenguajes java, ya estaria conforme en esta vida con los lenguajes que quisiera saber. Muchas gracias por esto, ahora lo pruebo,


Título: Re: Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Publicado por: Eleкtro en 12 Marzo 2018, 17:11 pm
¿"Text1 es mayor que Text2"?, sí, lo es mientras lo sigas comparando como texto, es decir, como una ordenación alfanumérica clásica donde "2" es mayor que "10"... como puedes comprobar en la siguiente imagen aleatoria de ejemplo:

Cita de: https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/
(https://i.imgur.com/GtFhYmn.png)

( en Wikipedia tienes otro ejemplo para apreciar la diferencia: https://en.wikipedia.org/wiki/Natural_sort_order )

Si lo que necesitas es tratar tipos de datos numéricos pues entonces debes hacer eso, convertir el valor del tipo String al tipo primitivo Integer, no comparar directamente strings. Puedes utilizar la función Val() para ese propósito como ya te ha explicado el compañero @Engel Lex, aunque lo cierto es que no es la solución más estable si por descuido tu programa permite evaluar cualquier string que no sea numérico y no controlas ese escenario de error, y también por que el tipo de retorno si no recuerdo mal en VB6 era Double... lo cual no es el más adecuado (aunque cumpla su funcionalidad igualmente).

Saludos.


Título: Re: Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Publicado por: RiasChan en 12 Marzo 2018, 17:30 pm
Hola, justamente por eso último que dices bloquié en el txt cualquier ingreso de palabras, puntos o simbolos, sólo dejé la coma y numeros. Pero me surigó otro problema, y cree el otro topic, tal vez puedas ayudarme ahi tambien, gracias!