Visual Basic.NET - no para en ciclo for

 
Vista:
Imágen de perfil de f
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por f (94 intervenciones) el 06/12/2016 19:34:29
Hola amigos:
tengo un ciclo for-next para recorrer a los alumnos de un grupo y en cada uno de ellos asignarles la calificacion en un textbox, pero el ciclo se va de corrido, o sea, no se detiene en cada alumno para capturar su evaluación, este es el código:
1
2
3
4
5
6
7
8
For Each row As DataRow In Ds.Tables(0).Rows
    nombrefoto = row.Item("nombre").ToString() & ".jpg"
    Label9.Text = row.Item("nombre").ToString()  ''''Ds.Tables(0).Rows(0)("nombre").ToString()
    PictureBox1.Image = Image.FromFile("\\subdirector\est22\fotos\" & nombrefoto)
    TextBox2.Focus()  '''''aqui deberia detenerse para introducir en el text algún número
    '''aqui realizar cálculos matemáticos
    ''' guardar los cambios
Next

Algo que me falte? cual es el procedimiento para que se detenga en esa instruccion del setfocus.
Agradezco su ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 785
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Miguel (476 intervenciones) el 06/12/2016 22:52:46
Mmm, pues así está un poco difícil... Yo esperaría cierto tiempo con un bucle (Do While | Do Until | Do Loop) mientras el usuario llena el campo. Hay que ejecutar "application.doEvents()" dentro del bucle para que el usuario pueda interactuar. Si lo haces con tiempo, antes del bucle inicia una variable con el tiempo transcurrido (igual a 0), luego en el bucle pausas un rato (250 milisegundos quizá, con system.threading.thread.sleep()) y le vas sumando lo pausado, al llegar al máximo detienes el bucle y continúas. También lo puedes hacer por ejemplo habilitando un checkBox para indicar que ya se completó el campo...


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 209
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Javier (75 intervenciones) el 07/12/2016 00:30:50
Y ese numero que quieres introducir en el TEXTBOX, no lo puedes hacer por código? en lugar de querer detener el FOR.

Si explicas mejor para que quieres detener el FOR al estar recorriendo los datos te podríamos ayudar un poco mas, si bien no tenemos el funcionamiento tal cual de tu idea, creo estás enfocando mal la manera de procesar los datos.

Explícanos mas a detalle la idea o funcionamiento de tu proceso.

Cuantos PictureBox quieres llenar? si es solo uno por que traer una colección de datos y no solo el que requieres? creo esa información nos deberías de plantear mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de FCO. JAVIER MEDRANO S
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por FCO. JAVIER MEDRANO S (94 intervenciones) el 07/12/2016 01:56:39
Gracias amigos:
Miguel, no entiendo muy bien tu propuesta porque creo que eso es para programadores expertos, yo soy novato, pero me informaré.
Javier: Tengo mi programa de administraciònd de mi escuela, en una parte yo capturo las evaluaciones de los alumnos. cada grupo tiene 25 alumnos, en la BD estàn los 300 alumnos, pero selecciono solo un grupo, 2ª A, hago un select para ese grupo y quiero recorrer cada registro(alumno) del grupo en cuestiòn. La idea que tengo es que con un for-next recorrer a todos los alumnos, presento en pantalla el nombre y la foto del primer alumno y tengo un text para introducir la calificaciòn, luego la voy a procesar, acabando esto el ciclo llega al next y pasa al siguiente alumno, presento su nombre y foto, introduzco en el text su calificación, la proceso y paso al siguiente alumno. Lo que no puedo o no entiendo cómo hacer es que enmedio del ciclo for next se detenga en el text para capturar dicha calif. Ojalá me entiendas.
Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 785
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Miguel (476 intervenciones) el 07/12/2016 02:32:17
En realidad no. Después del "TextBox2.Focus()" que tienes solamente "pausa" el procesamiento con un bucle (While) mientras el usuario ingresa el valor, dentro de este bucle solamente verifica si ya ingresó el valor y sales del bucle...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fco Javier Medrano s
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Fco Javier Medrano s (94 intervenciones) el 07/12/2016 03:43:28
Entiendo Miguel, voy a probar y comento, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward
Val: 396
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Edward (146 intervenciones) el 07/12/2016 04:56:54
Buen día para todos,

FCO. JAVIER MEDRANO, analizando tu inconveniente y el método que has elegido para resolverlo tengo para decirte que en lo personal considero que no debes usar un ciclo para este proceso, debido a que un ciclo hace eso realizar un proceso una determinada cantidad de veces y al querer interrumpir sus proceso en cada registro perdería toda su efectividad y esencia.

Como el dilema se encuentra en el ingreso de la nota a cada estudiante yo pensaría en que agregaras un campo a esta tabla que puede ser "Estado" y que tenga el valor de "Calificado" o "Pendiente" así realizas la consulta a tu base de datos y traes solo los que estén pendiente por calificar y una vez calificado actualizas el estado, porque mirando tu ciclo For este no contiene ninguna validación que permita identificar si un determinado estudiante ha sido calificado o no.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fco. Javier Medrano Salez
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Fco. Javier Medrano Salez (94 intervenciones) el 07/12/2016 15:39:26
Gracias Edward!
Me parece que tu idea en mi caso no funcionaría del todo bien, al menos con los pocos conocimientos que tengo de visual. Te explico: TODOS los alumnos están pendientes para la primera nota, todos para la segunda y asi sucesivamente, son 5 en total. TODOS recibirían su primera nota al mismo tiempo; después de eso, (que ya estarían calificados, necesito modificar a aquellos que se regularizaron, o sea editar su nota), por tanto creo que con ese campo extra no veo cómo diferenciar a los calificados o pendientes para una edición de su nota. Creo que me he metido en un lío, estoy probando la sugerencia de Miguel por el momento. si me ilustras más podré poner en práctica tu sugerencia. GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 21
Ha disminuido su posición en 4 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Isaias (3 intervenciones) el 07/12/2016 18:06:01
Hola,

y si en lugar de parar en un TextBox, para en un formulario?, ejemplo:

1
2
3
4
5
6
7
8
For Each row As DataRow In Ds.Tables(0).Rows
    nombrefoto = row.Item("nombre").ToString() & ".jpg"
    Label9.Text = row.Item("nombre").ToString()  ''''Ds.Tables(0).Rows(0)("nombre").ToString()
    PictureBox1.Image = Image.FromFile("\\subdirector\est22\fotos\" & nombrefoto)
 
    FormularioCaptura.ShowDialog
 
Next

Con FormularioCaptura.ShowDialog el ciclo se detiene y en el formulario haces todas las operaciones que necesites
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Fco. Javier Medrano Salez
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Fco. Javier Medrano Salez (94 intervenciones) el 07/12/2016 19:34:33
Gracias amigo Isaias, ya probé tu sugerencia tampoco es posible porque el formulario no es un formulario modal, entiendo que lo llamo desde otro formulario y me dice que quite ese atributo para poder mostrar el showdialog. Veré si puedo hacerlo de otra manera sin el For each. Ahora la idea que tengo es recorrer la tabla con un do while hasta que se acaben los registros, alguna idea? en VB6 se declaraba:

do while not EOF()
...
...
end while

cómo se hace eso en NET?
GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 209
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Javier (75 intervenciones) el 08/12/2016 00:16:21
Haz pensado en llenar un control, tal vez un datagridview y dejar una columna con un textbox para que ahí se vaya metiendo la calificación?, en el mismo control podrías mostrar todos los datos que requieres, incluyendo la imagen o foto del alumno, creo así controlas mejor la información y trabajando con el diseño de Grid te podría quedar muy presentable, al final solo recorres el Grid y guardas o actualizar la info en tu BD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de FCO. JAVIER MEDRANO S
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por FCO. JAVIER MEDRANO S (94 intervenciones) el 08/12/2016 01:12:26
Hola
Buena idea Javier! he intentado todo y no me sale. Estaré fuera unos días y regresando me pongo a trabajar sobre tu idea. GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward
Val: 396
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Edward (146 intervenciones) el 08/12/2016 04:36:53
Buen día para todos,

FCO. JAVIER MEDRANO, Te comento que a mi forma de ver considero muy factible crear un formulario para este proceso y un botón que te traiga de la base de datos todos los alumnos que estén pendiente por calificar, ya seria cuestión de organizar tu formulario para que en cada control se cargue la información del estudiante actual y puedes implementar en el botón con el que guardas o actualizas las notas que si deseas.

En ese orden de ideas puedes hacer la consulta de la siguiente forma:

1
"Select * Alumnos where Nota="" or Nota2="" or Nota3="" or Nota4="" order by CodigoAlumno"

Como te recomendó el colega Javier puedes usar un DataGridView para mostrar el listado de forma ordenada, ahora también puedes agregar al botón guardar que mediante un cuadro de dialogo preguntar si desea agregar las notas al siguiente alumno y nuevamente llamas la función para que te cargue los que van quedando por calificar.

Pero no haría lo de colocar un TextBox en el DataGridView preferiría utilizar controles en el formulario, debido a que al tener tantos registros cargados es muy probable un error de digitación mientras que el formulario sabes que solo estará cargados los datos de un único registro.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Fco. Javier Medrano Salez
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Fco. Javier Medrano Salez (94 intervenciones) el 12/12/2016 16:10:05
Gracias Edward!
Voy a seguir tu consejo, creo que es más práctico, aunque todos me han dado una luz para resolver esto. Concluyo que es difícil trabajar con el ciclo For each para recorrer una tabla y manipular sus registros. Voy a hacerlo de otra manera y les comento el resultado. GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fco. Javier Medrano Salez
Val: 16
Ha aumentado su posición en 151 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

no para en ciclo for

Publicado por Fco. Javier Medrano Salez (94 intervenciones) el 12/12/2016 20:22:38
Amigos:
Por fin pude resolver mi problema, de lo más fácil, simplemente a la hora de capturar la evaluacion de cada estudiante en lugar de un textbox, mando un INPUTBOX y asunto arreglado, GRACIAS a todos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar