Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Alex Rodríguez en 15 de Abril 2012, 20:19
-
La consulta recibida es la siguiente:
Mensaje: Hola estoy estudiando programacion en visual basic 5, me cuesta porque no tuvimos una buena base los años anteriores por diferentes causas de los profesores.
Tengo un ejercicio con cuatros pantallas, los dos primeros me dan bien estos se tratan de colocar el apellido, nombre y dni en la primera pantalla con la venta de cada mes del primer semestre de un vendedor con un boton comamd buton "siguiente" con este debe pasar los tres primeros datos deben aparecer en la segunda pantalla con laventa de cada mes del vendedor cuyos resultados deben aparecer en el formulario3 en donde debemos colocar una comision. Damos en siguiente para pasar al formulario 4 en donde nos debe aparecer el Apellido, Nombre y el resultado de la operacion en el formulario3, puse los siguientes codigos:
Private Sub cmdCancelar_Click()
txt3.Text = " "
CancelUpdate
End Sub
Private Sub cmdSiguiente_Click()
Dim Porcentaje As Double
Porcentaje = Text3.Text
Comisionanual = (RPS + RSS) * Porcentaje / 100
Comisionanual.Show
End Sub
Private Sub Form_Load()
Text1.Text = RPS
Text2.Text = RSS
End Sub
pero me da un error en Comisionanual = (RPS + RSS) * Porcentaje / 100 lo que no me permite pasar al formulario4
ah en el formulario4 puse lo siguiente:
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Text3.Text = Comisionanual
End Sub
Por favor ayudenme a comprender mejor leo todos lo que tienen y me ayudan a comprender un poco mejor desde ya muchisimas gracias
Respuesta: Hola, las cuestiones a comprobar son varias:
- La primera, ¿qué es RPS Y RSS? Suponemos que son variables numéricas y que tienen como ámbito el adecuado, pero habría que comprobarlo.
- La segunda cosa que llama la atención es la línea Porcentaje = Text3.Text
El tipo que devuelve un control text es tipo texto, mientras que tú necesitas un tipo numérico.
Te recomiendo que te leas esta entrega del curso de Visual Basic: La función Val con Visual Basic para transformar texto en valores numéricos. Ejemplo de uso (CU00318A), que tienes en esta URL: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:la-funcion-val-con-visual-basic-para-transformar-texto-en-valores-numericos-ejemplo-de-uso-cu00318a&catid=37:curso-qprogramacion-en-visual-basic-nivel-iq&Itemid=61 (https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:la-funcion-val-con-visual-basic-para-transformar-texto-en-valores-numericos-ejemplo-de-uso-cu00318a&catid=37:curso-qprogramacion-en-visual-basic-nivel-iq&Itemid=61)
Lo que parece más lógico sería poner:
Porcentaje = Val(Text3)
Con esto podrías probar, pero aún así deberías introducir alguna validación o mecanismo de comprobación de que el valor que te introduzca el usuario es válido.
Pruébalo y si das más detalles quizás te podamos orientar algo más. Saludos.
-
Discculpen las molestias y para que me entiendan mejor les paso el ejercicio, no para que me lo hagan sino que me aclaren y pueda entenderlo
1)Se debe diseñar un sistema compuesto por 4 form. que calculara la comision anual variable obtenida de las ventas mensuales de cada empleado
2)diseñar los sig. form.a)debe contener el titulo ventas totales del primer semestre -- apellido, nombre y dni del empleado -- Las ventas totales del primer semestre discriminadas por mes, un boton cancelar que anula todo el procedimiento y un boton siguiente que nos traslade a la pantalla dos
b) debe contener el titulo ventas totales del segundo semestre -- los datos del empleado que deben aparecer automaticamente ya que fueron ingresados en el form.
1 -- discriminar por mes las ventas del segundo semestre
c) debe mostrar el total del primer semestre y solicitar que se ingrese el òrcentaje de comision
d) debe mostrar los datos del vendedor y la comision anual obtenida, que se obtendra de la siguiente manera sumar el total del primer semestre al total del segundo semestre este resultado multiplicarlo por el porcentaje de comision ingresado y dividirlo en 100
En la primera cuestion : RPS SIGNIFICA RESULTADO PRIMER SEMESTRE y esta variable esta declarada en un modulo con las demas variables
RSS significa Resultado Segundo Semestre
modulo 1
Public Apellido As String
Public Nombre As String
Public Dni As String
Public RPS As Double
Public RSS As Double
Public Porcentaje As Double
Public Comision As Double
En la 2º cuestion: - La segunda cosa que llama la atención es la línea Porcentaje = Text3.Text
Private Sub cmdSiguiente_Click()
Dim Porcentaje As Single
Porcentaje = Val(Text3)
Comisionanual = (RPS + RSS) * Porcentaje / 100
Comisionanual.Show
End Sub
Corregi lo que me dijiste aún me da un error de Compilacion-- uso no valido de la Propiedad Comisionanual =
con referencia a La función Val sólo reconoce el punto (.) como separador decimal válido (aunque esto puede verse afectado por la configuración regional de tu ordenador)
Mi configuracion esta como separador la coma, en ese caso como utilizaria la funcion de conversion de tipos de como CSng ó CDbl para convertir la cadena a un número.
Gracias y disculpe las molestia
-
Te comento las cosas que no me parecen correctas:
1. Si has declarado Porcentaje as Double previamente, ¿para qué lo vuelves a declarar como Porcentaje as Single? Si ya lo tienes declarado, no veo para qué volverlo a declarar.
2. Si has declarado una variable que se llama Comision, ¿cómo estás usando una variable que se llama Comisionanual? Si es la misma variable, no necesitarás declararla de nuevo. Si es una variable distinta, necesitarás declararla con su nombre correcto.
Con respecto a la configuración de tu ordenador para el uso de punto o coma como separador decimal, usa el separador que te funcione. Podrías implementar el que cuando se introduzca un separador no válido te lo transforme automáticamente en el otro, pero eso ya serían mejoras. Lo primero es conseguir que el programa funcione. Saludos.
-
Buen dia corregi los errores pero me da uso no valido de la propiedad "Comision"
Private Sub cmdSiguiente_Click()
Dim porcentaje As Double
porcentaje = Val(Text3)
Comision = (RPS + RSS) * porcentaje / 100
Comision.Show
End Sub
-
Creo que la sintaxis Comision.Show no es correcta, a mí por lo menos a primera vista no me lo parece.
El resultado tendrás que mostrarlo dentro de un Label o de otra manera.
Créate un Label en el formulario (de la misma forma que creas un botón puedes crear un label) que por ejemplo se llamará Label1. Luego escribe algo así como
Show
Label1.Caption = "El resultado obtenido es: " & Comision
También puedes probar para ver si está funcionando con una instrucción print como:
Print "El resultado obtenido es " & Comision & " aquí puedes añadir texto si quieres"
Una vez esté funcionando ya le pones el formato que más te guste, como si quieres ponerlo en un msgBox...
-
si te comprendo pero el error es en comision= (RPS + RSS) * porcentaje / 100 me da uso no valido de la propiedad, en el form comision tengo esto
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Val(Text3) = Comision
End Sub
-
Ayuda por favor !!!!!!!!
-
Aquí tienes un error:
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Val(Text3) = Comision
End Sub
Supongo que lo que querías poner es:
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Comision = Val(Text3)
End Sub
-
¿Por qué no pones todo el código que tienes, ordenadamente, para verlo en conjunto?
-
Private Sub cmdCancelar_Click()
txt3.Text = " "
CancelUpdate
End Sub
Private Sub cmdSiguiente_Click()
esto en form porcentaje
Dim Porcentaje As Double
Porcentaje = Val(Text3)
Comision = (RPS + RSS) * Porcentaje / 100
Text3.Text = Comision
Comision.Show
End Sub
Private Sub Form_Load()
Text1.Text = RPS
Text2.Text = RSS
End Sub
esto en el form comision
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Comision = Val(Text3)
End Sub
-
Veamos:
esto en form porcentaje
Dim Porcentaje As Double
Porcentaje = Val(Text3) Rem Aquí dices que porcentaje es lo que contenga Text3
Comision = (RPS + RSS) * Porcentaje / 100
Text3.Text = Comision Rem aquí dices que Text3 es Comision
Comision.Show
End Sub
No le veo sentido a lo que haces. Tienes que detenerte a pensar:
Un control Text es un control u objeto que contiene texto. Ese texto, si es un valor numérico, lo puedes transformar en un valor numérico. Pero ¿qué sentido tiene que digas Text3.Text = Comision después de haber dicho que Porcentaje era el contenido de Text3? Yo al menos no le veo sentido.
Si me pasas en un adjunto los archivos del proyecto de Visual Basic te lo miro directamente viendo el código en mi ordenador...
-
disculpa yo tambien no me entiendo pero corregi algo y me da la pantalla siguiente con el apellido y el nombre, pero no me sale el resultado en comision anual
esto puse ahora en el formulario de porcentaje
Private Sub cmdCancelar_Click()
txt3.Text = " "
CancelUpdate
End Sub
Private Sub cmdSiguiente_Click()
Dim Porcentaje As Double
Porcentaje = Val(Text3)
Comision = (RPS + RSS) * Porcentaje / 100
formComision.Show
End Sub
Private Sub Form_Load()
Text1.Text = RPS
Text2.Text = RSS
End Sub
ya me salio gracias por tu ayuda puse esto en formulario porcentaje
Private Sub cmdSiguiente_Click()
Dim Porcentaje As Double
Porcentaje = Text3.Text
Comision = (RPS + RSS) * Porcentaje / 100
formComision.Show
End Sub
en el formulario comision:
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Text3.Text = Comision
End Sub
ahora te pido que me guies en esto del boton Inicio para que vuelva al principio y otra para que el cursor salga ppor ejemplo en la caja de texto 4 para ingresar datos debo poner en el formulario 1 "ventas" o en el formulario 2 "ventas2" text4.setfocus o como hago para que el cursor me salga en el texto box en donde debo ingresar los datos desde ya mil disculpas por las molestias y nuevamente gracias por tu tiempo
-
SetFocus es un método que te permite fijar la ventana u objeto activo en un momento dado.
No puedes usar SetFocus en el formload ni en las declaraciones generales.
Para establecer el foco en un formulario usa una expresión como:
form1.SetFocus
Para establecer el foco en un control concreto usa algo como:
Text4.SetFocus
Piensa bien el orden en que vas fijando el foco. Es decir, el foco tendrás que fijarlo después de que el usuario haya pulsado un botón determinado, para enviar el foco allá donde quieras ponerlo. No tendrá sentido que establezcas el foco en medio de una declaración de código sin que el usuario haya pulsado algún botón.
-
lo que me decis lo hice en el boton cancelar y me sale bien cuando lo cancelo pero como lo hago sin ponerlo en form-load ni dentro de los codigos no entiendo como seria en este caso y lo del boton inicio me lo podes explicar ?? gracias
-
Creo que el SetFocus es sólo para los controles (textBox, botones, etc.). En el caso de los formularios (forms) el que se muestren u oculten lo puedes controlar con los métodos Show y Hide propios de formularios.
Te pongo un ejemplo:
Tenemos un formulario denominado Form1, en el cual existe un label denominado label1 y un botón denominado Command1 cuya propiedad Caption es "Pasar a Form2"
Tenemos un formulario denominado Form2, en el cual existe un label denominado label1 y un botón denominado Command1 cuya propiedad Caption es "Pasar a Form1"
El código asociado al formulario 1 es:
Private Sub Form_Load()
Label1 = "ESTE ES EL FORM 1"
End Sub
Private Sub Command1_Click()
Form2.Show
Form1.Hide
End Sub
El código asociado al formulario 2 es:
Private Sub Form_Load()
Label1 = "ESTE ES EL FORM 2"
End Sub
Private Sub Command1_Click()
Form1.Show
Form2.Hide
End Sub
De esta manera, puedes saltar al formulario que quieras (ir al inicio, ir al final, ir a donde quieras). Lo único que tienes que hacer es mostrar los forms que quieras con el método Show y ocultar los demás.
-
Si se que puedo ir a cualquier formulario con .show, ahora en la última pantalla tengo un commandBooton "Inicio" y quiero ir al inicio de la aplicacion, lo logro colocando el nombre del formulario.show pero quiero que los textbox de este formulario se limpien para comenzar a colocar datos dentro de los mismos mira lo intento de diferentes maneras como esta:
Private Sub cmdInicio_Click()
Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Text5.Text = " "
Text6.Text = " "
Text7.Text = " "
Text8.Text = " "
Text9.Text = " "
Text1.SetFocus
Ventas.Show
End Sub
vos que decis?
-
Si se que puedo ir a cualquier formulario con .show, ahora en la última pantalla tengo un commandBooton "Inicio" y quiero ir al inicio de la aplicacion, lo logro colocando el nombre del formulario.show pero quiero que los textbox de este formulario se limpien para comenzar a colocar datos dentro de los mismos mira lo intento de diferentes maneras como esta:
Private Sub cmdInicio_Click()
Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Text5.Text = " "
Text6.Text = " "
Text7.Text = " "
Text8.Text = " "
Text9.Text = " "
Text1.SetFocus
Ventas.Show
End Sub
vos que decis?
Me sale una depuracion en text4.text= " " sera porque en el formulario existe una linea separando los tres primeros textbox de los siguientes?
-
Tienes que controlar desde dónde actúas. Por ejemplo, no puedes pretender limpiar el formulario 1 desde un botón del formulario 4.
A mí lo que se me ocurre es algo así como:
modulo 1
Public Apellido As String
Public Nombre As String
Public Dni As String
Public RPS As Double
Public RSS As Double
Public Porcentaje As Double
Public Comision As Double
Public LimpiarFormVentas As Boolean
Es decir, tener una variable global que te controle si hay que limpiar el formulario.
Luego:
Private Sub cmdInicio_Click()
LimpiarFormVentas = True
Ventas.Show
End Sub
Ahora en el form ventas en el form_load pondríamos algo así:
if LimpiarFormVentas = True Then
Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Text5.Text = " "
Text6.Text = " "
Text7.Text = " "
Text8.Text = " "
Text9.Text = " "
Text1.SetFocus
... etc etc
Si no es en el form_load tendrá que ser cuando el formulario coja el foco o algún evento de deste tipo:
Private Sub Form_GotFocus()
if LimpiarFormVentas = True Then
Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Text5.Text = " "
Text6.Text = " "
Text7.Text = " "
Text8.Text = " "
Text9.Text = " "
Text1.SetFocus
End Sub
A lo que me refiero, en definitiva, es que cada cosa tiene su ámbito. Si quieres modificar el form1 tendrás que hacerlo desde el form1, no desde otro lado.
-
Por cierto, después de limpiarlo todo tendrás que volver a poner LimpiarFormVentas = False porque si no se te va a quedar siempre como True y no funcionaría.
-
OK resulta mas fácil como vos decís, controlarlo desde el mismo formulario ya que tengo el botón cancelar de donde vuelvo todo a cero, gracias por todo, me aclaraste varios puntos el principal es que debo pensar lo que quiero y luego encarar el problema, un abrazo y nos estaremos conectando nuevamente ante alguna duda muchas gracias!!!!
-
Otra lección importante que me parece deberías extraer es que si no tienes las bases o fundamentos, cualquier pequeña cosa que intentes te va a resultar muy difícil porque realmente al faltarte las bases no llegas a comprender cómo se debe afrontar y resolver un problema.
Creo que te vendría bien seguir el curso sobre Lenguaje de programación Visual Basic. Aquí te dejo el link al mismo: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
No te hablo ya del curso de Bases de la programación porque me imagino que no tienes tiempo. Lo que no sabe la gente es que el tiempo que se dedica a adquirir fundamentos después nos permite ir muchísimo más rápido y hacer las cosas muchísimo mejor. En fin, queda dicho... Intentaremos ayudar en la medida de lo posible. Saludos.
-
Hola Alex tengo este ejercicio me podrías ayudar por favor? es un sistema que registre prestamos con el 1º formulario que cargue los datos completos del solicitante, utilizando una conexión a base de datos en caso de que el usuario este cargado en la tabla correspondiente debe mostrar los datos y habilitar el botón siguiente que nos llevara al segundo formulario. En caso que no este cargado habilitar el alta antes de activar el segundo formulario.
mi duda es como hago la codificación, la verdad me cuesta entenderlo, al segundo formulario le entiendo un poco mas al igual que al tercero desde ya gracias
-
La primera cuestión que veo es que si vas a usar una base de datos tendrás que saber qué base de datos vas a usar, tanto el tipo de base de datos como dónde va a estar alojada, por ejemplo en un servidor. Si no sabes esto es como si quieres buscar una ficha en un armario pero no sabes donde está el armario o no tienes armario, ¿entonces cómo buscas la ficha?
-
La base de datos ya esta creada y la misma convertida estan guardadas en una carpeta ya cargue con el data lo que pasa es que no entiendo como hacer si esta cargado como habilito el boton siguiente o dondde ubico el boto sin que se vea hasta que se habilite y tambien como hacer con los botones agregar, grabar, cancela, salir, en donde o como los creo para que aparescan solamente cuando se los habilite para cargar los datos
-
Si ya tienes la base de datos y ya eres capaz de consultarla, creo que simplemente tengas que usar un condicional if then
if existenDatos then
nombreControl.Visible = True
else
nombreControl.Visible = False
Es decir, hay propiedades de los controles que te permiten que se muestren o que no se muestren. No estoy del todo seguro de si la propiedad es Visible o Hidden o Enabled, pero usando las propiedades de los controles puedes hacer que se muestren o no se muestren.
-
Hola tengo este ejercicio me podes guiar?, es un sistema de prestamos de una financiera con tres formularios: datos solicitante, montos, totales
esto es del formMontos
Private Sub cmdSiguiente_Click()
Dim Montosolicitado As Double
Dim Cuotasadevolver As Double
Dim Porcentaje As Double
Montosolicitado = Text4.Text
Cuotasadevolver = Text5.Text
If Cuotasadevolver <= 18 Then
Porcentaje = 25
Else
Porcentaje = 45
End If
Pocentaje = Text4.Text * Cuotasadevolver / 100
Text6.Text = Porcentaje
Valorcuotaapagar = Text4.Text * Porcentaje / Text5
formTotales.Show
End Sub
EL Porcentaje me sale cuando paso al form totales y no antes cual sera el error?
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Text3.Text = Dni
Text6.Text = Porcentaje
End Sub
Con esto debo pasar al formTotales en donde me debe salir valor de la cuota y el monto a devolver por supuesto que con los datos del solicitante esto tengo en este formulario
Private Sub cmdInicio_Click()
formDatos.SetFocus
End Sub
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Text3.Text = Dni
Text4.Text = Valorcuotaapagar
End Sub
Ademas estan las variables declaradas en el modulo como publicas
Public Apellido As String
Public Nombre As String
Public Dni As String
Public Ape As String
Public Valorcuotaapagar As Double
Public Porcentaje As Double
desde ya Gracias!!!!!!
-
El error desde mi punto de vista es que no tienes las bases, y si intentas construir un edificio empezando por el tejado... no te va a salir.
Estás haciendo cosas muy raras... cosas que señalan que no entiendes bien los conceptos. Te recomendaría que empezaras con el curso de Bases de la programación.
De cualquier manera voy a tratar de orientarte algo:
Visual Basic es un lenguaje basado en eventos (orientado a eventos). El código se ejecuta cuando ocurre un evento. Por ejemplo un evento es la carga de un formulario, y otro evento es el evento click sobre un botón.
Así el código dentro de un Private Sub cmdSiguiente_Click() ....... End Sub es el código que se ejecutará cuando ocurra el evento "click del usuario sobre el botón".
Ahora fíjate lo que haces:
Private Sub cmdSiguiente_Click()
Dim Montosolicitado As Double
Declaras una variable para que se cree después de que el usuario haga click. No creo que esto tenga sentido. Normalmente las variables se declaran o en cabecera del formulario, o a lo sumo en el form_load, es decir, cuando carga el formulario, pero declararla dentro del código de respuesta a un click... frío frío.
Después fíjate lo que haces... Estableces el valor de Porcentaje en función de Cuotasadevolver declarado en el mismo procedimiento de respuesta a un click. Obviamente Cuotasadevolver no tiene ningún valor, pues lo acabas de crear y no ha ocurrido ningún evento que permita que tenga valor.
Obviamente el Porcentaje no es conocido hasta que ocurre el evento click sobre el botón. ¿Cómo quieres que se ejecute el código antes si tú mismo estás diciendo que se ha de ejecutar cuando ocurra el evento click sobre el botón?
No te quiero desanimar, al contrario, te quiero animar a que empieces el curso de Lenguaje de programación Visual Basic por el principio y lo vayas siguiendo; de otra manera me parece que frío frío...
Saludos y suerte.
-
Hola Alex, creo que te pasas cuando insistes en que debe hacer el curso de bases de programación o de programación visual basic. Supongo yo que si milanga está siguiendo estudios de programación ya se encargarán sus profesores de que siga los cursos necesarios... aquí estamos todos para ayudar!