Si no me está
afectando demasiado el 'síndrome del maldito lunes que no se acaba', en
ficheros de este tipo solamente podrás acceder a un registro en concreto si
solamente uno de los campos tiene valor no fijado.
En el ejemplo: si
con el peso supieras exáctamente el tramo a aplicar, entonces, cambiando la
clave para poner delante el tramo de peso, te bastaría con un setll y un read,
pero si el tramo de peso no es conocido a priori, lo vas a tener incluso más
complicado de lo que comentas. Por ejemplo:
fecha
vigor hasta peso
1/5/2004 10
1/3/2004 40
Si este
caso es factible, para un paquete de 30 kilos con fecha la de hoy, si te
posicionas en la fecha más cercana no encontrarías tarifa a aplicar. Esto
no pasará si todas las versiones de la tarifa recogen todos los pesos
posibles.
Si todas
las tarifas recogen todos los pesos posibles, entonces lo tienes mejor: un
setgt por Empresa/Delegación/Tarifa/Fecha a
aplicar + un readpe por Empresa/Delegación/Tarifa, para calcular la última
fecha de vigencia y luego un setll por Empresa/Delegación/Tarifa/Fecha vigencia obtenida
anteriormente/peso del bulto + un reade
por Empresa/Delegación/Tarifa/Fecha vigencia obtenida
anteriormente para obtener el registro a aplicar. De esta manera
no necesitas bucle .
Saludos.
Fernando
Pérez.
Cerámica Saloni.
Dpto. Sistemas
Buenas tardes.
Se me plantea la siguiente duda (ya de
lunes...).
Tengo un fichero que va a contener precios para
tarifas, y puedo grabar estos para que entren en vigor dada cierta fecha. Es
decir, la clave sería: Empresa/Delegación/Tarifa/Fecha vigor y Hasta
Kilómetros y tendría un precio para esta clave.
Mi duda está en si es posible, y cómo (cambio
en claves del fichero o estructura de fichero), capturar el registro en
vigor de forma directa sin utilizar bucle de lectura alguno, esto es
directamente con Setll/Segt y Read/Reade/Readpe poder recuperar el registro
en vigor. Creo que la única forma es posicionandome por fecha y leyendo
hasta localizar el correspondiente a 9 kms, pero es por quitarme la duda de
si se puede hacer exclusivamente con las instrucciones Setxx y
Readx/Readpx?.
Imaginar estos datos, siendo
Empresa/Delegación/Tarifa conocidos y restrictores, y deseo saber precio
tarifa para 2004-05-31 con 9 kms u 11 kms por ejemplo:
2004-01-01 // hasta 10 kms // 100
€
2004-01-01 // hasta 20 kms // 200
€
2004-01-01 // hasta 30 kms // 300
€
...etc
2004-06-01 // hasta 10 kms // 101
€
2004-06-01 // hasta 20 kms // 102
€
2004-06-01 // hasta 30 kms // 103
€
...etc
(Esta tarifa de junio puede existir para
contemplar de antemano un cambio de tarifa
futuro)