Bienvenidos a Ver Tutoriales.com, en esta ocasión voy a exponer el código de un bucle for next en visual basic 6 (vb6).
He recibido un par de correos diciendome en el post anterior que no expuse el código de visual basic 6 (vb6), es cierto, pasé por alto ese detalle suponiendo que no tendrían problema en adaptarlo, pero cierto es, que me equivoqué ya que no todos tenemos el mismo nivel, ni el mismo conocimiento. Y aquí estamos para ayudar, así que para que todos aprendamos…
Este breve artículo va dirigido a Roberto y Capuchón dos iniciados en Vb6 con muchas ganas de aprender y que me están siguiendo desde hace tiempo.
Bueno vamos al lio. Voy a exponer el código «base»:
For contador = inicio to fin [Step]
[exit for]
Next
Vamos a ver paso por paso que es cada elemento del bucle for:
– contador, es la variable de control, es donde se irá almacenando cada una de las vueltas del bucle,
– inicio, el valor inicial del bucle.
– fin, el valor donde ha de terminar
– step (opcional), el valor del sumatorio (puede ser negativo)
– exit for (opcional) para romper el flujo del bucle y salir directamente.
Con esto quedaría explicado el bucle tal y como hicimos en Flex. Aún así pondré un ejemplo con valores para dejarlo más claro:
For contador = 0 to 10 step 2
‘ hacemos cosas repitiendose
Next contador
En este caso utilizamos step por que vamos a ir de 2 en 2, si fuera de 1 en 1 no habría que ponerlo aunque no daría error al utilizarlo con 1. Cerramos con Next contador, que aunque tampoco hace falta poner el nombre de la variable de control del bucle, es aconsejable ponerla.
Espero que quede aclarada la duda. Tambien os pediría que si os surgen dudas con respecto al artículo que lo comenteis en vez de enviarme el correo, así nos ahorramos tiempo y tambien lo compartimos con todos.
Un saludo!
eddys betancourt 20 octubre, 2010
hola,soy nuevo en visual 6 no tengo muchos conosimientos en programacion pero lla llebo 2 meses seguidos intentando hacer un programa y me e estancado en algo que quisiera preguntar. para ver si me pueden ayudar
estoy haciendo mi propio reproductor de mp3 con buscador y lista de reproducion, no es nada nuevo pero lo importante es que lo estoy haciendo yo y eso me sube la moral.
por ahora solo quiero que me respondan aunque el saludo para poder saber si cuento con ustedes para darme una manito en mi programa
VideoTutoriales 20 octubre, 2010
Hola Eddys!
Claro que sí, estamos para ayudar.
Dispara cuando quieras!
roberth 7 enero, 2011
hola q tal soy estudiante de computacion e informatica de primer ciclo y necito saber mas sobre visual basic por favor necito todo el material relacionado con dicho programa por favor es urgente grasias
VideoTutoriales 8 enero, 2011
¿Algo en concreto? Visual Basic es amplísimo… si me dices sobre qué quieres programar quizás pueda orientarte.
Un saludo
Gustavo 9 febrero, 2011
Estimado, lamento tener que molestarte, pero nesecito solucionar cuanto antes este problema. Te ubico un poco.
Trabajo en VB6 y tengo un formulario con muchos txt en matriz. los cuales se marcan con una x o vacios. Al momento de actualizar (update) los datos la hace, pero con error, coloca a todos los campos de la tabla el mismo valor. Te dejo una muestra del codigo para que me deis una ayuda.
Private Sub ActualizaDetalle()
Dim a As Byte
For a = 0 To 59
cnn.Execute «UPDATE ORDENDETALLE set D = ‘» & TxtPD(a) & _
«‘, C = ‘» & TxtPC(a) & _
«‘, R = ‘» & TxtPR(a) & _
«‘, P = ‘» & TxtPP(a) & _
«‘ where NORDEN = » & TxtNOrdenRep.Text & «»
Next a
End Sub
Desde ya muchas gracias.
VideoTutoriales 10 febrero, 2011
Veamos, supongo que TxtPC(a) y las siguientes son las cajas, lo que no entiendo es para qué utilizas el index de cada caja de texto, es decir, si tienes un formulario con N cajas, todas las cajas deben de llevar el mismo nombre para que puedas acceder a ellas.
Ahora mismo con ese código pienso que tienes 4 cajas de texto, TxtPD, TxtPC, TxtPR y TxtPP, y ¿cada una de ellas tienen 60 elementos? si fuera así, tal y como lo tienes estarías guardando el último elemento de las cajas, ya que TxtNOrdenRep.text es invariable, por lo que estás haciendo 60 consultas «where NORDEN = » TxtNOrdenRep.Text, así que siempre se cumplirá la misma condición para guardar las 60 y por tanto irá guardando una encima de la otra hasta llegar a la última.
Si me explicas mejor como lo tienes estructurado internamente y como quieres guardarlo te podré ayudar mejor.
Un saludo!
Gustavo 10 febrero, 2011
Antes que nada muy agradecido de que respondas y le pongas interes a mi problema. Te cuento, El sistema guarda 60 registros con el mismo numero de una Orden de Trabajo (NORDEN) y con 240 opciones divididas en 4 campos.
Estas opciones corresponden a partes de un automovil a ser reparado. Copio algunos registros desde la tabla real para ilustrar mejor la idea.
ID NORDEN DOMINIO ZONA PIEZA D C R P
122 2 GQN741 D D Paragolpe x x x
123 2 GQN741 D D Panel de frente
124 2 GQN741 D D Rejilla de Radiador x x x
125 2 GQN741 D D Guardabarro Der.
126 2 GQN741 D D Pasarueda Der.
y asi hasta llegar a las 60 piezas con las posible reparaciones.
El formulario tiene 5 matrices TxtPiezas,(TxtPD(0…59), TxtPC(0…59),TxtPR(0…59) , TxtPP(0…59).
El punto es. Con el sistema puedo guardar en la tabla sin problemas (tal cual el ejemplo anterior) pero en caso de un cambio algunas veces necesito borrar algunas cruces (quitar de la orden de trabajo la reparacion de una pieza), o agregar otras cruces (al momento de la reparacion surgen otras piezas a reparar). y ahi es donde comienza el problema cuando hago un update, me modifica todo y el resultado es nefasto. Te adjunto el codigo que utilizo para grabar en la tabla, quizas te ayuda un poco a entenderme mejor.
Private Sub GrabaDetalleOr()
Dim Item As String
Dim p As Byte
For p = 0 To 59
cnn.Execute «INSERT INTO ORDENDETALLE » & «(NORDEN,DOMINIO,ZONA,PIEZA,D,C,R,P) VALUES(‘» & _
TxtNOrdenRep & «‘,'» & _
TxtDominio & «‘,'» & _
Left(TxtPieza(p), 1) & «‘,'» & _
TxtPieza(p) & «‘,'» & _
TxtPD(p) & «‘,'» & _
TxtPC(p) & «‘,'» & _
TxtPR(p) & «‘,'» & _
TxtPP(p) & «‘)»
Next p
End Sub
Otra vez muchas gracias!!!!!!!
VideoTutoriales 10 febrero, 2011
Cuando realizas el update ¿qué es lo que te graba exactamente?
Una solución rápida sería «delete from ordendetalle where txtnordenrep = » & norden
y luego GrabaDetalleOr()
No es lo más optimo pero se arreglaría, de todas maneras dime qué es lo que te guarda al hacer el update, qué te cambia?
De todas maneras pensando un poco más, creo que debias de haber separado las piezas en una tabla aparte y las relacionaras por el número de ordenes.
Ya me cuentas, solo doy posibilidades, no sé por donde llevas el proyecto 🙂
Gustavo 10 febrero, 2011
Las letras D,C,R,P corresponden a (Desarmar, Cambiar, Reparar, Pintar)
Cuando yo cargo por primera vez una orden para un vehiculo, el sistema genera En otra tabla (ORDENENCA) los datos del vehiculo y los costos. En una rutina siguiente agrega 60 registros nuevos en la tabla ORDENDETALLE,Marcando con una (x) las casillas correspondientes a la reparacion, y dejando en blanco las que no tienen reparacion. Recien ahi le damos ingreso al vehiculo al taller. Que pasa, en algunos casos luego de comenzar a reparar el auto, surgen cosas nuevas u otras no se reparan, lo que hace que el resultado de la reparcion difiera de la que grabamos en primera instancia.
Ahora si la pregunta era que resultado arroja la rutina (que esta mal realizada) es el siguiente.
Si yo borro un x (el error es. pone todos los campos de la tabla en blanco, cuando deberia solo corregir la que yo seleccione)
Si marco con una x una que estaba en blanco (el error es. pone todos los campos de la tabla con una x, cuando deberia solo corregir la que yo seleccione).
Si bien la posible solucion que me diste no es lo ideal, por el momento que que es la unica que veo viable, (eliminar todos los registros de la tabla y guardarlos nuevamente).
Nuevamente muy agradecido por tu dedicacion.
VideoTutoriales 10 febrero, 2011
Según tu consulta de actualización:
UPDATE ORDENDETALLE set D = ‘” & TxtPD(a) & _
“‘, C = ‘” & TxtPC(a) & _
“‘, R = ‘” & TxtPR(a) & _
“‘, P = ‘” & TxtPP(a) & _
“‘ where NORDEN = ” & TxtNOrdenRep.Text & “”
Solo estás tomando NORDEN para definir que cambiar, en cambio deberías de tomar tambien algún campo más, si tienes -> ID NORDEN DOMINIO ZONA PIEZA D C R P
No puedes solo tomar Norden cuando esa orden la utilizas para diferentes zonas/piezas, tendrás que buscar otro campo que determine que quieres cambiar solo ese campo, lo que estás haciendo es poner el valor a todos los que sean de esa orden. De otra manera y con código:
“UPDATE ORDENDETALLE set D = ‘” & TxtPD(a) & _
“‘, C = ‘” & TxtPC(a) & _
“‘, R = ‘” & TxtPR(a) & _
“‘, P = ‘” & TxtPP(a) & _
“‘ where NORDEN = ” & TxtNOrdenRep.Text & “ and zona = ‘Paragolpe’”
Simplemente tienes que ser más específico.
No sé si me expliqué bien. Pero me cuentas 🙂
Gustavo 10 febrero, 2011
Excelente amigo!!!!! a funcionado a la perfeccion!!!! realmente ahora viendolo tal como lo escribiste era un problema realmente muy sencillo, no puedo creer que he estado varios dias con este problema tan simple.
No se como agrader tu tiempo, tu dedicacion y tan buena onda.
te dejo mi mail, para lo que pueda ayudarte. gustavocarranza[arroba]gmail.com
una vez mas muchas gracias!!!!!
VideoTutoriales 11 febrero, 2011
De nada, 4 ojos ven más que 2.
Puedes twittearme, menearme o facebookearme para agradecermelo.
Te tomo en cuenta, es posible que podamos hablar, ya que veo que tienes conocimientos en vb6.
Un saludo!
fanny(: 26 mayo, 2011
hola! soy estudiante de preparatoria & estamos viendo visual basic D: lo cual para mi es super dificil no compredo muy bien eso y menos lo de los bucles t.t bueno el caso es qe ahora me dejaron hacer un programa que imprima en una caja de texto el cubo de los numeros del 1 al 20 pero no se muy bien como hacerlo, buenoo tego una idea de como empezar pero no se muy bienD: podrian ayudarme?(: por favor! gracias ñ.ñ’
VideoTutoriales 26 mayo, 2011
Bueno, lo primero es saber qué es lo que tienes que hacer, en este caso, el cubo de los números del 1 al 20…
1 * 1 * 1
2 * 2 * 2
…
20 * 20 * 20
Entonces a partir de ahí empezamos a verlo para reducir el trabajo y programarlo de manera sencilla. Sabemos que debemos de repetir la operación de 1 a 20 por lo que usaremos un for next y que necesitamos multiplicar la variable del for next y multiplicarla a si misma por tres, primero damos el paso en lenguaje natural
Repito num = 1; desde 1 a 20
muestro = num * num * num;
fin repito
Creo que con eso ya lo tendrás claro, sino vuelveme a preguntar y vemos donde tienes las dudas.
Un saludo!
hector 16 junio, 2011
For I = 1 To I Step 1
lstordenes.AddItem I
Next I
End Sub
como le hago para k me ponga en una lista 1 2 3 4 ect
porfas
VideoTutoriales 16 junio, 2011
Buenas Hector
La metodología está bien, solo que has realizado el bucle con respecto al valor de I
Hacer I = 1 hasta I (que vale 0) avanza 1
añade un item con valor I
repite I
Como el hasta I vale 0, añadirá solo un valor, para que quede correcto tendrás que cambiar ese valor y poner las veces que quieras, por ejemplo:
For I = 1 To 4 Step 1
lstOrdenes.AddItem I
Next I
Con esto ya lo tendrías listo
adan 23 mayo, 2012
hola mi nombre es adan y estudio la preparatoria en informatica y algunas veces me surge problemas para usar while wend y quisiera saber si me podrian dar una ayudadita. y por cierto muy excelentes sus explicaciones para resolver los problemas.
VideoTutoriales 23 mayo, 2012
Buenas Adan
Lo que tienes que tener en cuenta es que el bucle while – wend, hace la pregunta antes de entrar en el bucle.
Mientras (ocurra esto)
secuencia de operaciones/funciones
repetir
No sé si te resuelve alguna duda, aunque si estás empezando a programar, te aconsejo que traduzcas a lenguaje natural, te resultará más sencillo entenderlo.
Un saludo!
dani 5 junio, 2012
hola buena tarde m puedes dar un ejemplo de for next pero bien estructurado es decir k m diga dim elefante 1 to 5 o algo x el stilo sk n se como va stoy studiando m dejaron investigar 1 ejemp pero no encuentro xfa gracias de ante mano jeje
VideoTutoriales 5 junio, 2012
En el ejemplo lo tenemos con la estructura básica. Lo que me estás comentando de Dim es declaración de variables. Si lo que quieres es copiar y pegar el código, solo tienes que añadir una linea más al segundo código propuesto. Por ejemplo:
Dim contador as integer
For contador = 0 to 10 step 2
msgbox «El valor de contador ahora es: » & contador
Next contador
Espero que resuelva tu duda, sino aquí me tienes para continuar ayudándote 😉
Dani 12 junio, 2012
mm ps muchas gracias me ayudo mucho y si no es molestia me puedes dar otro jeje x fa 😉
VideoTutoriales 13 junio, 2012
No sé que es lo que quieres que te deje. ¿Algún ejemplo más sobre el bucle en vb6?
william 27 septiembre, 2012
¡Gracias! que forma más sencilla de explicarlo realmente fue muy fácil y rápido entenderlo. Te agradezco. Dtb!
VideoTutoriales 27 septiembre, 2012
Me alegro que te sirva 🙂 En realidad un Bucle For next en Vb6 es muy parecido a los diferentes lenguajes que existen.
Un saludo!
Jossue 5 octubre, 2012
Hola que tal, me podrias ayudar lo que pasa que me dejaron de tarea hacer una aplicacion donde pueda comparar 20 numeros y me diga cual es el numero mayor y cual el menor, todo esto usando el for, porfavor ando atoradisimo
VideoTutoriales 5 octubre, 2012
Buenos días Jossue, viendo que me estaba extendiendo mucho, he decidido escribirte un artículo para explicarlo:
http://www.vertutoriales.com/index.php/saber-si-un-numero-es-mayor-y-menor-de-una-lista/
Un saludo!
Ruben 1 noviembre, 2012
Bueno quisiera que me ayudara con este problema:
Elaborar un programa que imprima todos los números primos que se encuentran entre dos valores, así mismo imprimir la suma respectiva.Muy agradecido si lo respondiera…
VideoTutoriales 2 noviembre, 2012
Al ser una respuesta extensa, creé un nuevo tuto:
http://www.vertutoriales.com/index.php/saber-numeros-primos-entre-dos-valores-dados-metodologia/
Espero que te sirva. Un saludo!
oneyda 22 noviembre, 2012
hola muy buenos tus comentarios y kiero k me ayudes como hacer un programa que muestre los datos de un cliente y aparezcan en una lista plis te lo agradecere.
oneyda 22 noviembre, 2012
en este programa tenemos que agregarle msgbox,inputbox y no se como aser estoy confundida
sandi 18 octubre, 2013
hola sera que me podrian ayudar hacer un for , pero que me tire estos numeros 1 3 5 7 9 11 etc en celdas de excel . siempre y cuando programando en visual basic de excel.
VideoTutoriales 18 octubre, 2013
Buenas, pues tal y como lo tienes aquí te valdría, solo poniendo que
for x = 1 to n step 2
//aquí el codigo de inserción en excel con el valor de x
next n
ChGarcia 20 enero, 2015
Amigo Buen dia.
Espero me explique.
Tengo una tabla elaborada y en la primera columna estan las claves (por ej BA001, MA001, MO001, BA002, MA002 ……….mo0100), Con Find encuentro las que comienza con «BA» y me dice por ejemplo que encontro 15, en la ventana que despliega. El asunto es que lo quiero llevar a otra tabla digamos de resumen donde nada mas estan los «BA»,uedo poner la que encontro primera ……….el problema es como le hago para pongas las «siguientes » (Next) «BA». For….. Next no me ha funcionada. Puede ayudarme ??
Te dejo la secuencia. Me repite el mismo.
For i = 1 To 30
i = 1 + i
Cells.Find(What:=»BA», After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
True, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Select
Selection.Copy
Range(«AA5»).End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste Link:=True
Range(ActiveCell.Offset(0, 3), ActiveCell.Offset(0, 4)).Select
Selection.ClearContents
Range(«AA4»).Select
Next i
videotutoriales 20 enero, 2015
Por lo que estoy viendo, ¿estás utilizando VBA no? O en su caso estás accediendo a una tabla de Excel… veamos, no te puedo dar el código exacto ya que no entiendo exactamente lo que estás haciendo, pero una forma que podrías hacer sería la siguiente:
Para utilizar el bucle for-next deberás primero saber cuantos registros aparecen (comentas que te devuelve 15) Entiendo que es con Cells.Find(What:=»BA»), Así que el bucle sería for i = 0 to 15. A continuación estás poniendo un i = i + 1, esto no puedes utilizarlo o no debes utilizarlo, ya que el propio bucle for-next ya te incrementa 1 automáticamente en cada iteración.
Luego lo que deberás recorrer son los registros devueltos por esa búsqueda que estás utilizando con cells.findNext. Te dejo el ejemplo en pseudocódigo:
registrosConBA = cells.find(BA)
for x = 1 to TotalRegistrosConBa
guardaEnOtraTabla siguiente registrosConBA
next x
Espero que te ayude. Cualquier nueva consulta por aquí me tienes.
Un saludo!
sara 2 abril, 2016
hola en realidad me urge un concepto concreto de el ciclo for .. alguien puede ayudarme gracias
Carlos Dk 4 abril, 2016
Si lanzas la pregunta… sobre el bucle for…
Bernardo Lopez D 31 enero, 2023
Si yo tengo una pregunta, yo tengo muchos problemas con los bucles for next y otros, la verdad no se cuando aplicarlos o en que tipo de situaciones aplcarlos espero su amable respuesta Gracias mo correo es bernardo102_1@hotmail.com y mi nombre es Bernardo Gracias y que Dios los bendiga