duda con calculo

Iniciado por ::: Devil :::, 15 Diciembre 2008, 19:50 PM

0 Miembros y 2 Visitantes están viendo este tema.

::: Devil :::

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.
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.

ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA

& eDu &

Haber, escribe tu duda aqui ahora.

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

::: Devil :::

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
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.

ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA

& eDu &

Te escribí que postees tu duda ahora... segun dices hace 1 post aun no la has resuelto.

::: Devil :::

#15
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
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.

ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA

BlackZeroX

#16
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 (vb) [Seleccionar]

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

    ' Ve ese convierte con la function val cualquier texto a numero)
    ' 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)
    If val(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


Este es el codigo un tanto optimisado de la pagina anterior que posteo
Cita de: & eDu & en 15 Diciembre 2008, 19:56 PM
Código (vb) [Seleccionar]
Function SacaR(num1 As String, num2 As String)
Dim total As String
If num1 >= num2 Then
SacaR = num1 / num2
total = 100 - SacaR
MsgBox total
ElseIf num2 >= num1 Then

SacaR = num2 / num1
total = 100 - SacaR
MsgBox total
End If
End Function


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

El arreglado, y ojala te sirva ¬¬!

Código (vb) [Seleccionar]

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.

Private Sub Form_Load()
variable = SacaR(10, 10)
MsgBox variable

variable = SacaR(val(text1.text), val(text2.text))
MsgBox variable
End Sub

' Fin
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
    Dim tmp As Long'Si hay desvordamiento o error con el tipo cambia a Double xP
    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
    Else ' no creo que esta parte se ejecute pero prevengo xP
Error:
        SacaR = -1 ' usa -1 para identificar este error, ya que una divicion siempre dara numero positivos ademas que no cumple lo que pides.
        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.
    End If
    SacaR = 100 - tmp
End Function
The Dark Shadow is my passion.

::: Devil :::

#17
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
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.

ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA

::: Devil :::

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
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.

ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA

BlackZeroX

#19
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 (vb) [Seleccionar]

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.

Private Sub Form_Load()
variable = SacaR(10, 10)
variable=iif (variable=-1,"",variable)
MsgBox variable

variable = SacaR(val(text1.text), val(text2.text))
variable=iif (variable=-1,"",variable)
MsgBox variable
End Sub

' Fin
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
    Dim tmp As Long'Si hay desvordamiento o error con el tipo cambia a Double xP
    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
    Else ' no creo que esta parte se ejecute pero prevengo xP
Error:
        SacaR = -1 ' usa -1 para identificar este error, ya que una divicion siempre dara numero positivos ademas que no cumple lo que pides.
        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.
    End If
    SacaR = 100 - tmp
End Function


Saludos.
The Dark Shadow is my passion.