errores al generar aplicacion

01/02/2006 - 01:29 por jorge | Informe spam
Estoy desarrollando una aplicacion donde calculo la cantidad que se debe
pagar a un prestamo utilizando la funcion Pmt(), y el generador detecta una
serie de errores que acontinuacion muestro:

Private Sub TextBoxCantidadPrestada_TextChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
TextBoxCantidadPrestada.TextChanged
If IsNumeric(TextBoxCantidadPrestada) Then
Cantidad = TextBoxCantidadPrestada
Else
MsgBox("Ingrese un valor numerico", vbCritical, "entrada de
datos erroneo")
TextBoxCantidadPrestada.SelectionStart = 0
TextBoxCantidadPrestada.SelectionLength =
Len(TextBoxCantidadPrestada)
cancel = True

End If
End Sub

Aqui en la linea donde fifura:

Cantidad = TextBoxCantidadPrestada

manifiesta el compilador que Un valor de tipo 'System.Windows.Forms.TextBox'
no se puede convertir en '2'.

y en la linea donde figura:

cancel = True

manifiesta el compilador que No se ha declarado el nombre 'cancel'.

SIENDO TODAS ESTAS LAS DECLARACIONES:

Dim Pagos As Double
Dim TipoInteres As Single
Dim duracion As Integer, Cantidad As Integer



Aqui en chkPagoanticipado manifiesta el compilador que no se ha declarado
"chkpagoanticipado"

Private Sub ButtonCalcular_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonCalcular.Click
REM devuelve un tipo double que indica el pago de una anualidad
REM basada en pagos periodicos constantes con un tipo de interes
REM tambien constante
Pagos = Pmt(TipoInteres, duracion, -Cantidad, 0,
chkPagoanticipado.value)
MsgBox(Format$(Pagos, "#.00"), vbInformation, "Total de pagos")

End Sub
End Class


Private Sub TextBoxTipoInteres_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TextBoxTipoInteres.TextChanged
If IsNumeric(TextBoxTipoInteres) Then
TipoInteres = 0.01 * TextBoxTipoInteres / 12


Aqui el compilador manifiesta que El operador '*' no está definido para los
tipos 'Double' y 'System.Windows.Forms.TextBox'.


Disculpen lo extenso que he sido asi que lo dejo a su criterio las
correcciones del caso muchas gracias.

Preguntas similare

Leer las respuestas

#1 Lucas
01/02/2006 - 03:29 | Informe spam
Hola, soy nuevo en esto de .Net, pero creo que los errores que mencionas se
deben a lo siguiente:

1° En donde haces:

Cantidad = TextBoxCantidadPrestada

pues creo que el error se debe a que estás tratando de asignar a una
variable tipo entera (Integer) un textbox, prueba lo siguiente:

Cantidad = TextBoxCantidadPrestada.Text, o en todo caso:
Cantidad = CInt(TextBoxCantidadPrestada.Text)

es decir, agrégale el ".Text".

2° De lo poco que sé, creo que "cancel" no es una palabra reservada, es por
eso que te pide que la declares. Creo que lo que has querido hacer es lo
siguiente:

e.Cancel = true

nota que he puesto una "e" antes de "cancel", esa "e" es uno de los
argumentos que recibe el evento TextChanged del textbox.

3° Eso del "chkpagoanticipado" no lo describes muy bien, pero dado el error
que te arroja creo que se debe a que esa variable no existe. Fíjate bien en
el nombre de ese control, a lo mejor hay una letra más o una letra menos en
el nombre del control o algo así (porque supongo que ese chk alude a un
CheckBox).

4° En la parte donde pones:

TipoInteres = 0.01 * TextBoxTipoInteres / 12

Creo que el error es el mismo que ocurre en lo primero que te describí,
prueba:

TipoInteres = 0.01 * TextBoxTipoInteres.Text / 12, o tal vez:
TipoInteres = 0.01 * CDbl(TextBoxTipoInteres.Text) / 12

Finalmente, no he podido dejar de notar que para hacer tus comentarios usas
la palabra reservada REM, lo que creo que ya nadie usa. Yo antes trabajaba
con VB 6, pero aún así me parece algo obsoleto, en fin, si conoces alguna
buena razón para seguir usando esa palabra reservada te pediría que me la
comuniques. Yo hago mis comentarios con una comilla simple: '

'Este es un comentario

Bueno, espero que te sirva de algo lo que te he escrito. Como te dije, soy
nuevo en este tema y no pretendo creerme un experto ni nada, pero vi la
oportunidad de ayudar y pues lo intenté.

Me avisas si te sirvió de algo lo que te he escrito. Nos vemos
Respuesta Responder a este mensaje
#2 jorge
01/02/2006 - 19:29 | Informe spam
"Lucas" escribió:

Hola, soy nuevo en esto de .Net, pero creo que los errores que mencionas se
deben a lo siguiente:

1° En donde haces:

Cantidad = TextBoxCantidadPrestada

pues creo que el error se debe a que estás tratando de asignar a una
variable tipo entera (Integer) un textbox, prueba lo siguiente:

Cantidad = TextBoxCantidadPrestada.Text, o en todo caso:
Cantidad = CInt(TextBoxCantidadPrestada.Text)

es decir, agrégale el ".Text".

2° De lo poco que sé, creo que "cancel" no es una palabra reservada, es por
eso que te pide que la declares. Creo que lo que has querido hacer es lo
siguiente:

e.Cancel = true

nota que he puesto una "e" antes de "cancel", esa "e" es uno de los
argumentos que recibe el evento TextChanged del textbox.

3° Eso del "chkpagoanticipado" no lo describes muy bien, pero dado el error
que te arroja creo que se debe a que esa variable no existe. Fíjate bien en
el nombre de ese control, a lo mejor hay una letra más o una letra menos en
el nombre del control o algo así (porque supongo que ese chk alude a un
CheckBox).

4° En la parte donde pones:

TipoInteres = 0.01 * TextBoxTipoInteres / 12

Creo que el error es el mismo que ocurre en lo primero que te describí,
prueba:

TipoInteres = 0.01 * TextBoxTipoInteres.Text / 12, o tal vez:
TipoInteres = 0.01 * CDbl(TextBoxTipoInteres.Text) / 12

Finalmente, no he podido dejar de notar que para hacer tus comentarios usas
la palabra reservada REM, lo que creo que ya nadie usa. Yo antes trabajaba
con VB 6, pero aún así me parece algo obsoleto, en fin, si conoces alguna
buena razón para seguir usando esa palabra reservada te pediría que me la
comuniques. Yo hago mis comentarios con una comilla simple: '

'Este es un comentario

Bueno, espero que te sirva de algo lo que te he escrito. Como te dije, soy
nuevo en este tema y no pretendo creerme un experto ni nada, pero vi la
oportunidad de ayudar y pues lo intenté.

Me avisas si te sirvió de algo lo que te he escrito. Nos vemos



Muchas gracias Lucas, muy exactas tus correcciones y se me paso lo del text,
bueno gracias, pero sigo con problemas con:

cancel=true

y lo puse como tu me recomendaste osea asi.

e.cancel=true

pero me salio el siguiente error:

'cancel' no es un miembro de 'System.EventArgs'.

AHORA EL PROGRAMA TAMBIEN A GENERADO EL SIGUIENTE ERROR:

Error en la línea 1. Se esperaba '<' pero se encontró 'null character'.

Muchas gracias .
Respuesta Responder a este mensaje
#3 Lucas
02/02/2006 - 00:22 | Informe spam
He revisado y recién he notado que el "e. cancel = true" no funciona porque
el argumento "e" que es del tipo "System.EventArgs" no acepta el método
"Cancel", se me pasó, sorry.

Pero, creo que esa sentencia no es necesaria, pues como solo se entra a ese
segmento del código en caso no sea numérico el dato ingresado, creo que no es
necesario una instruccion para cancelar lo hecho. Por lo que creo que una
sentencia de ese tipo no es necesaria. Sin embargo, podrías probar poniendo
"Exit Sub" en lugar de ese cancel, pero como te digo, mi primera opción sería
no poner ninguna de las dos sentencias. Simplemente dejarlo en:

"TextBoxCantidadPrestada.SelectionLength = Len(TextBoxCantidadPrestada)"

En cuanto al otro error, pues la verdad no puedo imaginar a que se pueda
deber, no sé si podrías enviar la línea de código en la que te sale el error.
Respuesta Responder a este mensaje
#4 jorge
02/02/2006 - 01:54 | Informe spam
"Lucas" escribió:

He revisado y recién he notado que el "e. cancel = true" no funciona porque
el argumento "e" que es del tipo "System.EventArgs" no acepta el método
"Cancel", se me pasó, sorry.

Pero, creo que esa sentencia no es necesaria, pues como solo se entra a ese
segmento del código en caso no sea numérico el dato ingresado, creo que no es
necesario una instruccion para cancelar lo hecho. Por lo que creo que una
sentencia de ese tipo no es necesaria. Sin embargo, podrías probar poniendo
"Exit Sub" en lugar de ese cancel, pero como te digo, mi primera opción sería
no poner ninguna de las dos sentencias. Simplemente dejarlo en:

"TextBoxCantidadPrestada.SelectionLength = Len(TextBoxCantidadPrestada)"

En cuanto al otro error, pues la verdad no puedo imaginar a que se pueda
deber, no sé si podrías enviar la línea de código en la que te sale el error.



Borre los cancel=true

como sugeriste, y cuando se genera aparece la ventana

MsgBox("Ingrese un valor numerico"), pero no el formulario ejecutado, algo
esta generando esto, puesto que desconozco esta accion, lo dejo a tu criterio
Respuesta Responder a este mensaje
#5 Lucas
02/02/2006 - 03:08 | Informe spam
Creo que el error está en la línea:

TextBoxCantidadPrestada.SelectionLength = Len(TextBoxCantidadPrestada)

porque el que no estés poniendo el ".Text" a "TextBoxCantidadPrestada" está
generando el error, pues no se puede calcular el tamaño del texto escrito.

prueba con:

TextBoxCantidadPrestada.SelectionLength = Len(TextBoxCantidadPrestada.Text)

También sería interesante que para que muestres mensajes uses el MessageBox,
en tu caso sería así:

MessageBox.Show("Ingrese un valor numerico", "Entrada de datos erronea",
MessageBoxButtons.OK, MessageBoxIcon.Error)

en vez del:

MsgBox("Ingrese un valor numerico", vbCritical, "entrada de datos erroneo")

Es solo una sugerencia, pero el MessageBox me parece más completo que el
MsgBox, al menos creo que puede recibir una mayor cantidad de argumentos y
por eso lo veo más completo.

Me avisas si te sirvió de algo lo que he escrito. Nos vemos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida