Ayuda con un ciclo Scan/Do While
Publicado por Manuel Raygoza (5 intervenciones) el 23/07/2008 21:09:12
Que tal. Tengo un problema con un ciclo.
Tengo una tabla con ciertos datos. Muchos registros son identicos a otros dentro de la misma tabla. Necesito identificar dos tipos de grupos dentro de la tabla de acuerdo a ciertas condiciones
Primeramente selecciono todos los registros de la tabla original y los guardo en un cursor
Posteriormente hago el procedimiento.
El problema esta en que solo asigna la letra A o S solo al primer registro del grupo identico
Ejemplo
Item - Programa - Unidad - Estado - Ambito - Status
1 12541 25 458 44 A
2 12541 25 458 44
3 12541 25 458 44
4 54565 18 221 72 A
5 54565 18 221 72
6 54565 18 221 72
7 12589 47 375 88 S
8 12589 47 375 88
Solo asigna la letra 'A' o 'S' al primer registro de los datos duplicados. Lo que necesito es que lo asigne a todos los registros y no solo al primer registro de los datos duplicados.
Mi codigo es el siguiente:
Select * ;
From &PcTabla ;
Into Cursor S1
Select S1
Go Top
Do While !Eof()
cActividad = S1.Programa
fUnidad = S1.Unidad
fEstado = S1.Estado
fAmbito = S1.Ambito
fMunicipio = S1.Municipio
fTipo = S1.TipoPlan
fNivel = S1.Nivel
fRango = S1.Rango
fIdPuesto = S1.IdPuesto
Select &PcTabla
Seek (cActividad + fUnidad + fEstado + fAmbito + fMunicipio + fTipo + fNivel +fRango + fIdPuesto)
If (cActividad = '11P07' and fUnidad = '101') or Inlist(AllTrim(cActividad),'01O01','02M01')
Replace Status with 'A' && Adjetivas
EndIf
If (cActividad = '11P07' and fUnidad <> '101') or InList(AllTrim(cActividad),'11R03','11R05','11K27','11R06','11R09')
Replace Status with 'S' && Sustantivas
EndIf
EndDo
Necesito de Su ayuda. Gracias.
Tengo una tabla con ciertos datos. Muchos registros son identicos a otros dentro de la misma tabla. Necesito identificar dos tipos de grupos dentro de la tabla de acuerdo a ciertas condiciones
Primeramente selecciono todos los registros de la tabla original y los guardo en un cursor
Posteriormente hago el procedimiento.
El problema esta en que solo asigna la letra A o S solo al primer registro del grupo identico
Ejemplo
Item - Programa - Unidad - Estado - Ambito - Status
1 12541 25 458 44 A
2 12541 25 458 44
3 12541 25 458 44
4 54565 18 221 72 A
5 54565 18 221 72
6 54565 18 221 72
7 12589 47 375 88 S
8 12589 47 375 88
Solo asigna la letra 'A' o 'S' al primer registro de los datos duplicados. Lo que necesito es que lo asigne a todos los registros y no solo al primer registro de los datos duplicados.
Mi codigo es el siguiente:
Select * ;
From &PcTabla ;
Into Cursor S1
Select S1
Go Top
Do While !Eof()
cActividad = S1.Programa
fUnidad = S1.Unidad
fEstado = S1.Estado
fAmbito = S1.Ambito
fMunicipio = S1.Municipio
fTipo = S1.TipoPlan
fNivel = S1.Nivel
fRango = S1.Rango
fIdPuesto = S1.IdPuesto
Select &PcTabla
Seek (cActividad + fUnidad + fEstado + fAmbito + fMunicipio + fTipo + fNivel +fRango + fIdPuesto)
If (cActividad = '11P07' and fUnidad = '101') or Inlist(AllTrim(cActividad),'01O01','02M01')
Replace Status with 'A' && Adjetivas
EndIf
If (cActividad = '11P07' and fUnidad <> '101') or InList(AllTrim(cActividad),'11R03','11R05','11K27','11R06','11R09')
Replace Status with 'S' && Sustantivas
EndIf
EndDo
Necesito de Su ayuda. Gracias.
Valora esta pregunta


0