Autor
|
Tema: Bucles. (Leído 2,599 veces)
|
mdg
Desconectado
Mensajes: 73
|
|
Bucles.
« en: 26 Agosto 2007, 21:55 pm » |
|
Hola amigos!
Tengo en una misma rutina dos bucles, o almenos es lo que intento, uno para recorrer los rst de una tabla e insertar los registros en un listview y otro para hacer correr un progressbar pero no logro hacer que marche, aver si pueden echarme una mano y decirme donde tengo el error:
Dim cuantoshay As Integer Dim contadorfor As Integer Dim lrg As Double Dim intv As Double Dim ctat As Integer Dim prct As Integer Dim sql As String Dim rst As DAO.Recordset Dim lstitem As ListItem Dim indice As Long Dim empresa As Integer
indice = indice + 1 empresa = Mid(Val(MDIForm1.lblempresa.Caption), 1, 4) Me.ListView1.View = 3
DBpath = App.Path & "\Datos\tablas.mdb" strsql = "SELECT * FROM tbl_empleados where empresa=" & empresa Set db = DBEngine.OpenDatabase(DBpath, False, False, ";pwd=" & MiPass) Set rst = db.OpenRecordset(strsql) rst.MoveFirst rst.MoveLast
cuantoshay = rst.RecordCount
For contadorfor = 0 To cuantoshay - 1
'ACA RECORRO LOS RST Y LOS INSERTO EN EL LISTVIEW PERO SOLO ME INSERTA EL PRIMERO Y LUEGO NADA Do Until rst.EOF Set lstitem = Me.ListView1.ListItems.Add(indice, , rst("legajo")) ListView1.ListItems(indice).ListSubItems.Add , , Me.txtconcepto.Text ListView1.ListItems(indice).ListSubItems.Add , , Me.lblconcepto.Caption rst.MoveNext Loop
Me.lblporcentaje.Visible = True Me.progreso.Visible = True
lrg = Me.ancho.Width 'para el ancho total al que debe llegar la barra de progres intv = lrg / cuantoshay 'valor por cada archivo
ctat = ctat + 1 'valor 1 prct = (ctat / cuantoshay) * 100 'porcentaje 1 Me.progreso.Visible = True Me.progreso.Width = ctat * intv 'el progreso es desde 1 * intv Me.lblporcentaje.Caption = prct & " %" 'muestra el porcentaje transcurrido Next
La barra corre bien por que inserte un msgbox antes del next para constatar que no tuviera el problema ahi pero no, asi que no logro dar con la solucion, por otro lado tambien intente hacer los dos procesos por separado pero en caso de que se produsca un error o inconveniento uno de los procesos terminaria antes que el otro y no se veria profesional, desde ya muchas gracias por su ayuda y por su atencion.
|
|
|
En línea
|
|
|
|
cobein
|
|
Re: Bucles.
« Respuesta #1 en: 27 Agosto 2007, 08:33 am » |
|
Bueno en realidad no estoy seguro pero mira esto
rst.MoveFirst rst.MoveLast
^^^^^ En realidad me parece que te carga elultimo registro y nada mas, tendrias que mover el puntero al principio creo.
cuantoshay = rst.RecordCount
For contadorfor = 0 To cuantoshay - 1
'ACA RECORRO LOS RST Y LOS INSERTO EN EL LISTVIEW PERO SOLO ME INSERTA EL PRIMERO Y LUEGO NADA Do Until rst.EOF Set lstitem = Me.ListView1.ListItems.Add(indice, , rst("legajo")) ListView1.ListItems(indice).ListSubItems.Add , , Me.txtconcepto.Text ListView1.ListItems(indice).ListSubItems.Add , , Me.lblconcepto.Caption rst.MoveNext Loop
Me.lblporcentaje.Visible = True Me.progreso.Visible = True
lrg = Me.ancho.Width 'para el ancho total al que debe llegar la barra de progres intv = lrg / cuantoshay 'valor por cada archivo
ctat = ctat + 1 'valor 1 prct = (ctat / cuantoshay) * 100 'porcentaje 1 Me.progreso.Visible = True Me.progreso.Width = ctat * intv 'el progreso es desde 1 * intv Me.lblporcentaje.Caption = prct & " %" 'muestra el porcentaje transcurrido Next
En cuanto al resto del codigo que sugiero que lo mires bien por que esta mal, tenes un for que va de 0 hasta EOF-1 y dentro de eso un loop que va de BOF a EOF, lo que quiere decir que vas a hacer andar el loop tantas veces como registros tengas.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
|
Re: Bucles.
« Respuesta #2 en: 27 Agosto 2007, 20:08 pm » |
|
cobein seguramente lo de rst.MoveFirst rst.MoveLast es para depsues poder utilizar el recordcount, ya que en algunas webs dice q folo funciona cuando se esta en el ultimo registro, tonces hay que hacer un rst.MoveLast y que a veces ni asi funciona yo creo q todo es mie*da, y utilizo algo mas sencillo asi que mdg utiliza esto para contar los registros, seguro y rapido rst.Close rst.Open "select count(*) from TABLA WHERE= condiciones", cnn, adOpenDynamic, adLockOptimistic TotalReg = Val(rst.GetString) la variable TotalReg contiene la cantidad de registros. espero te sirva, adios
|
|
|
En línea
|
|
|
|
mdg
Desconectado
Mensajes: 73
|
|
Re: Bucles.
« Respuesta #3 en: 28 Agosto 2007, 02:57 am » |
|
Hola muchachos, gracias a ambos, elmaro , gracias por pasarme el codigo para contar registros me viene al pelo,gracias a sus sugerencias pude solucionar la cuestion asi:
Dim cuantoshay As Integer Dim contadorfor As Integer Dim lrg As Double Dim intv As Double Dim ctat As Integer Dim prct As Integer Dim sql As String Dim rst As DAO.Recordset Dim lstitem As ListItem Dim indice As Long
Me.ListView1.View = 3 indice = indice + 1 DBpath = App.Path & "\Datos\tablas.mdb" strsql = "SELECT * FROM tbl_empleados" Set db = DBEngine.OpenDatabase(DBpath, False, False, ";pwd=" & MiPass) Set rst = db.OpenRecordset(strsql) 'Movemos el foco de los registros del inicio al fin 'con el objeto de contarlos lugo rst.MoveFirst rst.MoveLast 'Volvemos a mover el foco al primer registro rst.MoveFirst cuantoshay = rst.RecordCount
For contadorfor = 0 To cuantoshay - 1
Me.lblporcentaje.Visible = True Me.progreso.Visible = True
lrg = Me.ancho.Width 'para el ancho total al que debe llegar la barra de progres intv = lrg / cuantoshay 'valor por cada archivo
ctat = ctat + 1 'valor 1 prct = (ctat / cuantoshay) * 100 'porcentaje 1 Me.progreso.Visible = True Me.progreso.Width = ctat * intv 'el progreso es desde 1 * intv Me.lblporcentaje.Caption = prct & " %" 'muestra el porcentaje transcurrido Set lstitem = Me.ListView1.ListItems.Add(indice, , rst("legajo"))
rst.MoveNext
Next
Osea movia el registro del primero al ultimo para contarlos y luego lo muevo nuevamente al principio antes de comenzar el bucle, gracias nuevamente y pueden cerrar el tema.-
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
|
Re: Bucles.
« Respuesta #4 en: 28 Agosto 2007, 15:54 pm » |
|
me alegro por ti cualquier duda pregunta
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con bucles
Programación C/C++
|
NLkurosaki
|
2
|
2,531
|
13 Diciembre 2010, 16:55 pm
por NLkurosaki
|
|
|
Iconos de los programas??/Bucles?
Programación C/C++
|
prometheus48
|
1
|
2,053
|
10 Octubre 2011, 05:21 am
por naderST
|
|
|
No hay separadores de bucles en VS ???
Programación C/C++
|
x64core
|
1
|
1,867
|
10 Octubre 2011, 04:03 am
por seba123neo
|
|
|
Bucles y arrays en Microsoft Access (VBA)
Programación Visual Basic
|
Lecram
|
5
|
7,402
|
31 Enero 2012, 17:50 pm
por MCKSys Argentina
|
|
|
Ayuda con bucles VB 2010
« 1 2 »
.NET (C#, VB.NET, ASP)
|
juanlulete
|
17
|
9,175
|
22 Julio 2012, 11:32 am
por juanlulete
|
|