Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ::: Devil ::: en 15 Diciembre 2008, 19:50 pm



Título: duda con calculo
Publicado por: ::: Devil ::: en 15 Diciembre 2008, 19:50 pm
tengo otra preguntica que estoy bien dudoso y no me entra en la cabeza como hacerlo  :huh:

tengo un text1 en el cual meto un numero x que esta comprendido entre el 1 y el 100 entonces yo quiero que cuando metan supongamos el numero 37 en el text2 me quede lo que faltaria para llegar a 100 que seria 63


Título: Re: duda con calculo
Publicado por: Novlucker en 15 Diciembre 2008, 19:52 pm
Te recomiendo leer algún tutorial básico de vb, así se te hará más fácil seguir con esto  :rolleyes:

Código
  1. Private Sub TextBox1_Change()
  2.  
  3. TextBox2.Text = 100 - Val(TextBox1.Text)
  4.  
  5. End Sub

Saludos


Título: Re: duda con calculo
Publicado por: & eDu & en 15 Diciembre 2008, 19:56 pm
Código
  1. Function SacaR(num1 As String, num2 As String)
  2. Dim total As String
  3. If num1 >= num2 Then
  4. SacaR = num1 / num2
  5. total = 100 - SacaR
  6. MsgBox total
  7. ElseIf num2 >= num1 Then
  8.  
  9. SacaR = num2 / num1
  10. total = 100 - SacaR
  11. MsgBox total
  12. End If
  13. End Function

Te sirve?
Me ABURRÍA y me comí la cabeza x'dd


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 15 Diciembre 2008, 20:07 pm
ninguno de los dos me sirvio no se por que


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 15 Diciembre 2008, 20:10 pm
gracias brother ya lo realize con este

Private Sub TextBox1_Change()
 
TextBox2.Text = 100 - Val(TextBox1.Text)
 
End Sub

jejejeje no es leer el manual si no que tenia 1 año y algo sin programar pero no quiero seguir leyendo ahorita jejeje


Título: Re: duda con calculo
Publicado por: BlackZeroX en 16 Diciembre 2008, 05:49 am

Yo en lo personal te recomiendo que te lees el libro o manual ¬¬"


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 16 Diciembre 2008, 13:48 pm
los post innecesario o para decir lo mismo creo que no tienen nada que ver aqui no postees para decir lo que esta diciendo otro user por favor  :rolleyes:

TextBox2.Text = 100 - Val(TextBox1.Text)

if textbox1.text= 0 then
textbox2.text= 0
end if

con este pedaso de codigo yo estaria diciendo que si en el textbox1 no hay resultado o esta en 0 me quedaria 0 en el textbox 2 verdad?


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 16 Diciembre 2008, 13:54 pm
ya esta listo lo hice asi

Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text4.Text = 100 - Val(Text3.Text)
SendKeys "{tab}"
End If
If Text3.Text = 0 Then
Text4.Text = 0
End If
End Sub

con el else no me queria dar el resultado cerre el ciclo y abri uno y si me lo dio


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 16 Diciembre 2008, 14:07 pm
o.k ya resolvi ese problema y si cuando los campos llegasen a quedar en blanco y no coloquen 0 por que no tiene como quedaria

if text3.text = 0 then
text4.text = 0
end if
if text3.text = "" then
text4.text=0
end if

seria algo asi o mas o menos como


Título: Re: duda con calculo
Publicado por: & eDu & en 16 Diciembre 2008, 15:53 pm
Es bueno que te leas un libro, además creo que no esta permitido escribir 3 mismos posts seguidos, ves editando.


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 16 Diciembre 2008, 16:26 pm
seguimos con el peo del libro jejeje estoy preguntando por que e leido y no consigo como hacer ese calculo por eso pregunto aqui por que me han sacado de duda varias veces y ya han dicho leete un libro 20 veces yo creo que no es necesario que repitan post innecesarios y disculpa si te ofendes.


Título: Re: duda con calculo
Publicado por: & eDu & en 16 Diciembre 2008, 16:27 pm
Haber, escribe tu duda aqui ahora.


Título: Re: duda con calculo
Publicado por: Novlucker en 16 Diciembre 2008, 16:29 pm
Bueno, creo que no es necesario entrar en una discusión de si debes de buscar o no en un libro, pero creo que lo que ocurre es que a nadie le entra en la cabeza (me incluyo) que sabiendo programar como dices hagas ese tipo de preguntas, están en las primeras páginas de un libro de VB básico :-X

Saludos


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 16 Diciembre 2008, 16:36 pm
bueno brother si no tienes nada que opinar no opinas o si no vas a ayudar si sabes que esta en los promeros libros por que no lo pones entonces vas a colocar post innecesarios


Título: Re: duda con calculo
Publicado por: & eDu & en 16 Diciembre 2008, 16:37 pm
Te escribí que postees tu duda ahora... segun dices hace 1 post aun no la has resuelto.


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 17 Diciembre 2008, 13:41 pm
bueno ve mi problema esta aqui

Private Sub Text44_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text44.Text = 100 - Val(Text43.Text)
SendKeys "{tab}"
End If
If Text43.Text = 0 Then
Text44.Text = 0
End If
End Sub

aqui en este pedaso dice que el valor de text44 va a ser igual a 100 cuando se introduzcan datos mayor a 0 verdad

pero si no se introducen datos es decir el textbox quedaria en blanco que tendria que agregar e tratado con esto y no me da

if text43.text = "" then
text44.text = ""
end if

mi problema no esta el metodo empleado si no en como yo haria para que cuando este en blanco el textbox no marque 100 en el otro textbox cuando no ingrese datos

lo hice asi y tampoco me furula

Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text4.Text = 100 - Val(Text3.Text)
SendKeys "{tab}"
End If
If Text3.Text = 0 Then ------------> aqui me da el error
Text4.Text = 0
Else
If Text3.Text = "" Then
Text4.Text = ""
End If
End If
End Sub

type mysmath es el error


Título: Re: duda con calculo
Publicado por: BlackZeroX en 17 Diciembre 2008, 18:00 pm
una písta que te resolvera la vida xD

dim texto as string   es lo mismo que   un campo de texto es decir un textbox
dim numero as integer (long, double, byte, u otro qu sea reprentativo de un numero) seráidentico a val(texto) o en un campo de texto es decir un textbox [val(textbox.text)]

es codigo para fixear ese error seria:

Código
  1. Private Sub Text4_KeyPress(KeyAscii As Integer)
  2.    If KeyAscii = 13 Then
  3.        Text4.Text = 100 - Val(Text3.Text)
  4.        SendKeys "{tab}"
  5.    End If
  6.  
  7.    ' Ve ese convierte con la function val cualquier texto a numero)
  8.    ' De la misma manera se puede convertir un numero a texto con la Funcion STR() qu seria la inversa a VAL() o a INT() (cabe decir que int() solo da numeros completos no decimales y es integer xp)
  9.    If val(Text3.Text) = 0 Then ------------> aqui me da el error
  10.        Text4.Text = 0
  11.    Else
  12.        If Text3.Text = "" Then
  13.            Text4.Text = ""
  14.        End If
  15.    End If
  16. End Sub
  17.  

Este es el codigo un tanto optimisado de la pagina anterior que posteo
Código
  1. Function SacaR(num1 As String, num2 As String)
  2. Dim total As String
  3. If num1 >= num2 Then
  4. SacaR = num1 / num2
  5. total = 100 - SacaR
  6. MsgBox total
  7. ElseIf num2 >= num1 Then
  8.  
  9. SacaR = num2 / num1
  10. total = 100 - SacaR
  11. MsgBox total
  12. End If
  13. End Function

Te sirve?
Me ABURRÍA y me comí la cabeza x'dd

El arreglado, y ojala te sirva ¬¬!

Código
  1. dim variable as long ' Si cambias el tipo de la funcion sacar de long a otro es recomendable cambiar igualmente el tipo de esta vable a la misma para evitarte errores futuros si ocurriesen.
  2.  
  3. Private Sub Form_Load()
  4. variable = SacaR(10, 10)
  5. MsgBox variable
  6.  
  7. variable = SacaR(val(text1.text), val(text2.text))
  8. MsgBox variable
  9. End Sub
  10.  
  11. ' Fin
  12. Function SacaR(ByVal num1 As Long, ByVal num2 As Long) As Long ' si el numero es muy grande cambia el long por double aun que no creoq ue tengas problemas con long
  13.    Dim tmp As Long'Si hay desvordamiento o error con el tipo cambia a Double xP
  14.    If num1 = 0 And num2 = 0 Then GoTo Error:
  15.    If num1 >= num2 Then
  16.        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
  17.        tmp = num1 / num2
  18.    ElseIf num2 >= num1 Then
  19.        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
  20.        tmp = num2 / num1
  21.    Else ' no creo que esta parte se ejecute pero prevengo xP
  22. Error:
  23.        SacaR = -1 ' usa -1 para identificar este error, ya que una divicion siempre dara numero positivos ademas que no cumple lo que pides.
  24.        Exit Function ' sale e ignoa el resto del codigo por debajo de esta linea pudo ser ext sub solo si fuese un proceso simple que no devuelve anda como los eventos de un boton al ser llamados y tratados de almacenar en una variable, marcara error.
  25.    End If
  26.    SacaR = 100 - tmp
  27. End Function
  28.  


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 17 Diciembre 2008, 18:42 pm
vamos por parte me distes el codigo y una pregunta cuando los cambos quedan vacios no me va a dar resultado

If num1 = 0 And num2 = 0 Then GoTo Error:
    If num1 >= num2 Then
        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
        tmp = num1 / num2
    ElseIf num2 >= num1 Then
        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
        tmp = num2 / num1

por que aqui me estas diciendo que cuando num 1 y num 2 sean iguales a 0

y cuando num 1 y num2 sean mayores

y cuando el campo quede vacio por eso lo explique arriba

mi unico jodido problema esta en que cuando quiero dejar los campos en blanco igual me sigue saliendo el resultado 100 y no quiero que salga quiero que se quede en blanco tambien me entiendes o si no me avisas y te lo explico mejor


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 17 Diciembre 2008, 19:05 pm
ya lo arregle jejeje

Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text4.Text = 100 - Val(Text3.Text)
SendKeys "{tab}"
End If
If Text3.Text = "0" Then
Text4.Text = "0"
End If
If Text3.Text = "" Then
Text4.Text = ""
End If
End Sub

con solo colocar los 0 en comillas se me arreglo el problema


Título: Re: duda con calculo
Publicado por: BlackZeroX en 17 Diciembre 2008, 19:41 pm
juega con el codigo esta perfecto si uso val(text1.text)  y que text1.text no tenga nada y como val devuelve el numero actual etonces devolvera 0 entiendes el concepto? ahora el uso de

text1.text="0" es tonto si se usa para comparar numeros  si mas en cambio
val(text1.text)=0  es correcto ya que se comparan los mismos tipos numero a numero y NO numero Texto ¬¬" mmm bueno ahora sigamos que text1.text tiene lo siguiente

12asda

esa convinacion de numeros y letras si deseas hacer alguna operación con esto si se puedo pero lo tendras que convertir a numero mmm mejor dicho extraer el valor usando val

lo cual devolveria 12 e ignorara asda

usar val es algo indispensable para hacer operacion entre valores numericos y evitar errores por lo cual mi codigo de arriba estan correctos ojala los probaras y jugaras con tu propia logica contra la mia y la de muchos que han de pensar lo mismo je.

Nota: nunca jusgues, nunca te sueltes, nunca camines con la luz apagada podrias tropesar al andar.


Usa el -1 para o que pides Xao aca te lo dejo...
Código
  1. dim variable as string ' Si cambias el tipo de la funcion sacar de string a otro es recomendable cambiar igualmente el tipo de esta vable a la misma para evitarte errores futuros si ocurriesen.
  2.  
  3. Private Sub Form_Load()
  4. variable = SacaR(10, 10)
  5. variable=iif (variable=-1,"",variable)
  6. MsgBox variable
  7.  
  8. variable = SacaR(val(text1.text), val(text2.text))
  9. variable=iif (variable=-1,"",variable)
  10. MsgBox variable
  11. End Sub
  12.  
  13. ' Fin
  14. Function SacaR(ByVal num1 As Long, ByVal num2 As Long) As Long ' si el numero es muy grande cambia el long por double aun que no creoq ue tengas problemas con long
  15.    Dim tmp As Long'Si hay desvordamiento o error con el tipo cambia a Double xP
  16.    If num1 = 0 And num2 = 0 Then GoTo Error:
  17.    If num1 >= num2 Then
  18.        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
  19.        tmp = num1 / num2
  20.    ElseIf num2 >= num1 Then
  21.        If num2 = 0 Then GoTo Error ' Esto se activa cuando hay una divición por cero
  22.        tmp = num2 / num1
  23.    Else ' no creo que esta parte se ejecute pero prevengo xP
  24. Error:
  25.        SacaR = -1 ' usa -1 para identificar este error, ya que una divicion siempre dara numero positivos ademas que no cumple lo que pides.
  26.        Exit Function ' sale e ignoa el resto del codigo por debajo de esta linea pudo ser ext sub solo si fuese un proceso simple que no devuelve anda como los eventos de un boton al ser llamados y tratados de almacenar en una variable, marcara error.
  27.    End If
  28.    SacaR = 100 - tmp
  29. End Function
  30.  

Saludos.


Título: Re: duda con calculo
Publicado por: ::: Devil ::: en 17 Diciembre 2008, 19:45 pm
no estubo bueno y gracias por ayudarme en ningun momento e criticado nada solo que lo queria hacer por mi parte pido ayuda para que me den ideas por que se que la logica de uno no es igual a la de otros pido la ayuda y la programacion de otros para yo hacer la mia y me sirvio de mucho la ayuda que ustedes me dieron muchas gracias a todos