Access - until en access

   
Vista:

until en access

Publicado por kanika (52 intervenciones) el 24/09/2013 11:26:04
Hola a tod@s!!
necesito insertar un registro en una tabla, pero primero tengo que leer los registros de esa tabla hasta que encuentre un campo que empieze por ECS y coger los datos del registro anterior a ese.

he creado un recordset como sigue pero no se que instrucción sería he puesto while pero me pide también la instrucción wend al final, y no quiero hacer un buble sino insertar un solo registro pero cogiendo los datos del registro anterior al que empieza por ECP

Set Rs = db.openrecordset("mitabla", DB_OPEN_DYNASET, 512)

While Not Rs!campo Like ECP%

Rs.AddNew
Rs!OT = 123
Rs!cod_produc ='MMMM'
Rs!cod_mprima = "0000001"
Rs!cantidad = 1
Rs!orden = Rs.FindPrevious + 1
Rs.Update

si pongo el wend me da error en la línea Rs!orden = Rs.Findlast + 1
me dice argumento no válido

alguna sugerencia? gracias
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

until en access

Publicado por kanika (52 intervenciones) el 24/09/2013 13:33:18
esta es mi segunda prueba, con **describo el error que me da

Dim miSql As String
Dim variable As String
Dim rs As Recordset

miSql = "SELECT * FROM mitablaT WHERE mitabla.OT=Me.OT"

Set db = CurrentDb
Set rs = db.OpenRecordset(miSql, DB_OPEN_DYNASET, 512) **pocos parámetros. Se esperaba 1.

With rs
.AddNew
!OT = Me.OT
!cod_produc = "MMMM"
!cod_mprima = "0000001"
!cantidad = 1
variable = ".findfirst(.campo Like ECP*)"
'!orden = variable!orden - 1 **el calificador debe ser una colección, por eso esta comentada
.Update
MsgBox "[variable]"
End With

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

creo que casi lo tengo pero no acaba de funcionarme
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 Neckkito

until en access

Publicado por Neckkito (1104 intervenciones) el 24/09/2013 23:04:34
Hola!

Prueba con esto:

...
Const miStop as string = "ECP"
Dim miValor as variant 'Te pongo variant porque no sé qué tipo de dato quieres recoger
'Aquí el resto de declaración de variables

Set rst = db.openrecordset("mitabla",dbOpenDynaset)

With rst
.movefirst
Do until .EOF
If left(.Fields("NombreCampoDeStop").value,3)=miStop then
.moveprevious
miValor=.fields("NombreCampoQueContieneElDatoQueNecesitas").value
.addnew
.Fields("OT").value=123
'Resto de campos
.Fields("orden").value=miValor 'O, si necesitas operarlo, por ejemplo miValor+1
.update
Exit Do
End if
.movenext
Loop
End with
....

Evidentemente, si puedes crearte una consulta que te filtre los valores que necesitas (para no tener que recorrer toda la tabla) deberías hacer lo mismo pero:

- Crearte la SQL que te hace el filtro
- Crear el recordset sobre la SQL

A ver si te funciona.

Saludos,


http://neckkito.siliconproject.com.ar
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

until en access

Publicado por kanika (52 intervenciones) el 25/09/2013 11:11:32
muchísimas gracias, voy a probarlo y ya te cuento
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

until en access

Publicado por kanika (52 intervenciones) el 25/09/2013 14:55:58
perfecto!!!!! funciona perfectamente

con el filtro en sql va como la seda.
MUCHÍSIMAS GRACIAS OTRA VEZ
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