Access - Actualizar a 0 un campo si cumple con criterio

 
Vista:
sin imagen de perfil

Actualizar a 0 un campo si cumple con criterio

Publicado por Dany (40 intervenciones) el 11/10/2015 01:08:59
Saludos cordiales a todos nuevamente.

Tengo una tabla en la que doy secuencia a un campo por medio de un RecordSet, este campo lo utilizo como contador para armar una estructura de otra tabla. El RecordSet me funciona de maravilla pero no encuentro la forma de indicarle al RecordSet que si en el campo "Operation" de mi tabla tiene como dato "APPLY FERRITE" entonces en el campo "SEQ" me ponga "0" y que el RecordSet siga el proceso de actualizar mi secuencia.

Espero a ver me explicado lo que pretendo este es el codigo del RecordSet que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Function Seq_TERMINATE()
 
Dim MiSQLDel As String
Dim rst As DAO.Recordset, i As Integer, Actual As String
 
With DoCmd
.SetWarnings False
'Consulta SQL para ordenar por GRP,SEQ, FINISHED LEADCODE
Set rst = CurrentDb.OpenRecordset("SELECT Tbl_Terminates_Seq.GRP, Tbl_Terminates_Seq.SEQ, Tbl_Terminates_Seq.[FINISHED LEADCODE], Tbl_Terminates_Seq.[SUB FINISHED], Tbl_Terminates_Seq.OPERATION FROM Tbl_Terminates_Seq WHERE [OPERATION]='TERMINATE' or [OPERATION]='APPLY FERRITE' And [DESCRIPTION]='FERRITE' ORDER BY Tbl_Terminates_Seq.GRP, Tbl_Terminates_Seq.SEQ, Tbl_Terminates_Seq.[FINISHED LEADCODE];")
 
With rst
 
.MoveLast
.MoveFirst
 
Do Until .EOF
    i = i + 1
    'Si el FINISHED LEADCODE ya no es igual a (Variable Actual) entonces reinicia a 1
 
    If ![FINISHED LEADCODE] <> Actual Then i = 1: Actual = ![FINISHED LEADCODE]
    .Edit
    'Variable i es integer acumulable i=1+1
    ![SEQ] = i
    .Update
    .MoveNext
    Loop
 
End With
 
rst.Close
Set rst = Nothing
 
End With
 
End Function

Edito:
Una imagen vale mas que mil palabras, por si esta algo turbio la explicación que di lo marcado en Verde es la secuencia que me da el RecordSet:

2uglxk4

Espero puedan ayudarme por favor.

Saludos

DS
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

Actualizar a 0 un campo si cumple con criterio

Publicado por Enrique Heliodoro (1664 intervenciones) el 11/10/2015 02:17:38
Original:
i = i + 1
If ![FINISHED LEADCODE] <> Actual Then i = 1: Actual = ![FINISHED LEADCODE]

Modificado:
i = (i + 1 ) * Abs(![FINISHED LEADCODE] = Actual)
If ![FINISHED LEADCODE] <> Actual Then Actual = ![FINISHED LEADCODE]
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
sin imagen de perfil

Actualizar a 0 un campo si cumple con criterio

Publicado por Dany (40 intervenciones) el 12/10/2015 20:22:04
Gracias por contestar Enrique.

Para que esta actualización en el codigo funcione, debo de modificar la Select del RecordSet es correcto Enrique?

Saludos

DS
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

Actualizar a 0 un campo si cumple con criterio

Publicado por Enrique Heliodoro (1664 intervenciones) el 12/10/2015 23:47:11
No veo la necesidad de cambiar nada, en base a los resultados que se muestran en el inicio del hilo, tanto el campo 'GRP' como el campo 'FINISHED LEADCODE' permiten el agrupamiento (y la consiguiente re-numeración ) y el que comience en cero es el resultado de una operación lógico-matemática.
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
sin imagen de perfil

Actualizar a 0 un campo si cumple con criterio

Publicado por Dany (40 intervenciones) el 19/10/2015 22:15:03
Gracias Enrique.

Pueden cerrar el hilo.
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