Access - Bucle While

   
Vista:

Bucle While

Publicado por Sara (171 intervenciones) el 01/05/2013 13:14:04
Buenas.
Tengo una tabla "PRODUCTOS" con 437 registros y quiero que al pulsar en un botón, unos campos (reg_num1, reg_num2...) saquen el valor de un campo concreto (NUMPRODUCTO) en todos los registros.

Private Sub Comando90_Click()
DoCmd.GoToRecord , , acFirst
While Not PRODUCTOS.EOF <<EL ERROR APARECE AQUI>>

Me.reg_num1 = Left(Me.NUMPRODUCTO, 2)
Me.reg_num2 = Mid(Me.NUMPRODUCTO, 3, 4)
Me.reg_num3 = Mid(Me.NUMPRODUCTO, 7, 7)
Me.reg_num4 = Right(Me.NUMPRODUCTO, 2)

Wend

End Sub

Al ejecutar estas líneas me dice "error 424 en tiempo de ejecución"
Qué hago mal?

Gracias un saludo.
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

Bucle While

Publicado por sara (171 intervenciones) el 01/05/2013 15:29:25
Me voy a explicar un poquito.
Necesito el código que recorra todos los registros de una tabla (o consulta).

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

Bucle While

Publicado por deneg_nhj (349 intervenciones) el 01/05/2013 15:30:07
Hola Sara

-- Abres el Recordest PRODUCTOS?
-- Haces referencia a la libreria de DAO?

Otro error que veo en tu código es que le falta "PRODUCTOS.MoveNext"

Saludos!


deneg_nhj
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

Bucle While

Publicado por Sara (171 intervenciones) el 01/05/2013 15:34:01
Gracias deneg_nhj, pero estoy empezando y no entiendo nada de lo que me dices de Recordest y librería de DAO.
Podrías aclarlo un poquito por favor.

Un saludo.
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

Bucle While

Publicado por jose (741 intervenciones) el 02/05/2013 14:08:07
Do While rs.EOF = False

rem hacer lo que sea porque existen registros

loop
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

Bucle While

Publicado por jose (741 intervenciones) el 02/05/2013 14:25:19
Do While rs.EOF = False

rem hacer lo que sea porque existen registros



rs.movenext
loop
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

Bucle While

Publicado por Sara (171 intervenciones) el 02/05/2013 16:07:47
Gracias jose, pero cuando ejecuto el código me dice:

Se ha producido el error '424' en tiempo de ejecución:

Se requiere un objeto

Alguna solución?
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

Bucle While

Publicado por jose (741 intervenciones) el 02/05/2013 17:30:20
claro , es que yo le he puesto al recordset el nombre de rs

Set rs = CreateObject("ADODB.RecordSet")
Set CON = Application.CurrentProject.Connection


consulta = "SELECT * FROM [PRODUCTOS] "


rs.Open consulta, CON, adOpenDynamic, adLockOptimistic

if rs.eof= false then
rs.MoveLast
rs.MoveFirst
end if


Do While rs.EOF = False

rem hacer aquie lo que se quiera hacer ejemplo ver un dato
msgbox = RS.Fields("Nombre-campo_tabla").Value

rs.MoveNext
Loop



RS.Close
DIME QUE PRETENES HACER , SI TIENES ALGUNA CONDICION DE BUSQUEDA DE LA TABLA Y TE DIRÉ COMO SE HACE Y DONDE QIOERES PONER LOS DATOS
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

Bucle While

Publicado por Sara (171 intervenciones) el 04/05/2013 13:49:37
Gracias Jose y perdona por tanta molestia.

Observo como el asunto se puede complicar todo lo que se quiera.
Solamente quería dividir el valor de un campo en 3 campos, dentro de los 437 registros de la tabla. De momento lo he solucionado con un bucle For next.

Un saludo.
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 Norberto

Bucle While

Publicado por Norberto (432 intervenciones) el 07/05/2013 09:35:13
Hola.

Para eso, si la división del campo no es muy compleja, podrías usar una consulta de actualización.P.E.:

1
2
3
4
5
6
Dim miSQL As String
 
miSQL = "UPDATE Tabla SET Campo1 = Left(Campo0, 10), " & _
         Campo2 = Mid(Campo0, 11, 10), " & Campo3 = Mid(Campo0, 21)
DoCmd.RunSQL miSQL


Un saludo.
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