Clarion - RECORRER TABLA ?

 
Vista:

RECORRER TABLA ?

Publicado por Ale (2 intervenciones) el 08/04/2008 04:13:17
Tengo la siguiente tabla con la siguiente estructura::

N SUCURSAL ESTADO
8554 Desactivada
8666 Desactivada
8554 Activada

El numero de sucursal puede estar una o mas de una ves en la tabla, pero solamente una sola ves va a tener el estado "Activada" toda las demas veces su estado sera "Desactivada".

La pregunta es:
Como puedo hacer para localizar (buscar) el registro que cumpla con ambas condiciones, por ejemplo "8554" and "Activada" ... probe con

N SUCURSAL = 8554
GET(TABLA, KEY)
if errorCode() then
"No existe"
else
"se encontro"
end

Pero solo se pocesiona el el primer registro que encuentre cuyo numero de sucursal sea igual a 8554. es por eso que no me sirve. se que tambien se puede usar set(key,key) pero lo malo de este ultimo metodo es que la lectura la hace secuencial registro por registro cosa que me parece que no es lo ideal.

Bueno esoerio que me puedan ayudar. gracias !

Ale
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

RE:RECORRER TABLA ?

Publicado por Jose Luis (3 intervenciones) el 08/04/2008 21:02:37
Para hacer eso necesitas una llave compuesta es decir q tenga los 2 campos. Y lo puedes hacer con get o set dependiendo pero seria mas rapido, aunque lo ideal es q lo hagas por set ya q tu indice tendria duplicados.

Entonces tu llave seria:
LLP:NSucursal_Estado con los 2 campos en este orden
y para buscar pudes usar
NSucursal = 8854
Estado = 'Activada'
GET(Archivo, LLP:NSucursal_Estado)
if errorcode()
no existe
else
existe
end


o
NSucursal = 8854
Estado = 'Activada'
SET(LLP:NSucursal_Estado, LLP:NSucursal_Estado)
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

RE:RECORRER TABLA ?

Publicado por Ale (1 intervención) el 10/04/2008 04:18:35
Gracias Jose por responder... lo pondre a prueba. luego comento los resultados !
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
sin imagen de perfil

RE:RECORRER TABLA ?

Publicado por Isaac Flores (54 intervenciones) el 12/04/2008 06:04:15
Hola buen día, no sé por qué tengas diseñada la tabla de esa manera, ya que el estatus de la sucursal deberia estar en el catálogo de sucursales, y por lo mismo, solo existir un registro.

A priori, se podría pensar en un mal diseño de la tabla, y lo más recomendable, es que si el campo "Estado" especifica el estado actual de la sucursal, este depende del campo "N Sucursal", y no deberia repertirse varias veces el registro en la tabla, aunque solamente exista una sola vez un registro con el status "activado".

Así como tienes tu tabla, la mejor solución ya te la dió José luis. Solo tienes que pensar si vas a admitir llaves duplicadas ó no, y como lo vas a controlar.

LA otra opción sin necesidad de crear otra llave o alterar la que tienes, es usar la instrucción SET:

Valor= 8854
clear(record)
NSucursal= Valor
set(key, key)
loop
next(tabla)
if errorcode() then break.
if nsucursal<>valor then break.
if estado='activado'
! se encontró el registro activado
break
end
end

en realidad no necesitas recorrer toda la tabla, solo los registros de la sucursal que estás buscando y usando una llave por el campo "NSUCURSAL".
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

RE:RECORRER TABLA ?

Publicado por Ale (2 intervenciones) el 12/04/2008 06:58:33
Issac gracias por responder. sos muy amable. efectivamente existe una tabla sucursales junto con una clave sin duplicado que esta formada por varios campos, entre esos campos estan nº de sucursal, nº de banco, nombre, direccion, ciudad. es decir, que esta convinacion de datos NO se pueden duplicar.
¿Porque esta diseñado de esta manera ? porque en la vida real por ejemplo la sucursal 5030 con su nombre, direccion, localidad, ciudad se la decide por algun motivo "desactivar" bajo esta situacion en un futuro pueden pasar 2 cosas:
la primera que luego de un tiempo se la vuelva a "activar", la segunda es que se puede dar de alta otra sucursal con el "mismo numero" (reciclado de nº de sucursal) pero con otra direccion, localidad etc. .... y en un futuro tambien puede pasar que esta ultima sucursal tambien se decida desactivar con lo cual tendriamos "dos" sucursales con el mismo numero "desactivadas" y dar de alta una tercer sucursal con el mismo numero... y mucho mas adelante se puede decidir volver a "activar" la primera pero desactivando la tercera... y otras conbinaciones mas.

Bajo esta situacion yo necesito a travez de una busqueda ( recorrer la tabla de sucursales) localizar la sucursal 5030 pero la que esta "Activada" descartando las otras. aparte en otro proceso necesito recorrer la misma tabla pero para saber cuantas y cuales sucursales estan desactivadas con el n de sucursal 5030 por ejemplo... espero haber sido claro. gracias por la ayuda nuevamente y pondre a prueba tus recomendaciones.

Saludos !
Ale.
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