¿Qué es un CORTE DE CONTROL?

GERAR
05 de Enero del 2005
Necesito saber con urgencia qué es un corte de control. Por favor expliquenmelo aunque sea es pseudocódigo. Saludos.

locutus
05 de Enero del 2005
Hola! Espero aclararte algo....
Un CORTE DE CONTROL es el proceso de un conjunto de registros, por ejemplo el resultado de una consulta a una BD , que está ordenado por cieto campo, de modo que se muestran subtotales o cuentas cada vez que ese campo cambia de valor.
Por ejemplo, si se tiene un registro con:

Cod_vendedor, fecha, cantidad_vendida

ordenado por codigo de vendedor, se puede hacer un corte de control por código de vendedor, de modo que para cada vendedor se muestre su código y la cantidad vendida en total (en todas las fechas).
Si los datos están ordenados también por fecha, se puede hacer un CORTE DE CONTROL DOBLE, indicando para cada vendedor cuanto vendió en cada año y luego en total.

locutus
05 de Enero del 2005
Te paso el pseudocódigo.
El problema principal que tienen los cortes de control sobre archivos en casi todos los lenguajes es que el último registro debe procesarse fuera de los bucles (el único lenguaje que conozco que no tiene este problema es el COBOL, porque se llega al fin de archivo si se intenta leer otro registro después del último). Si usas VB con un recordset en lugar de un archivo, ese problema tampoco estaría, porque después del último reg. tenés que hacer otro MoveNext para activar EOF....

leer primer registro
COD-ant = COD-vend
tot=0
mientras haya registros
subtot = 0
mientras haya registros Y COD-ant = COD-vend
'proceso del registro (acumular, contar...)
subtot = subtot + cantidad_vendida
'avance
moverse al siguiente registro
leer registro
fin mientras
si hay más registros entonces
imprimir COD-ANT & " vendió " & subtot
tot=tot+subtot
'p/ hacer el corte de control del sig vendedor
COD-ant = COD-vend
fin si
fin mientras

'proceso del último registro
subtot = subtot + cantidad_vendida
imprimir COD-ANT & " vendió " & subtot
tot=tot+subtot
imprimir "TOTAL: " & tot


Si querés hacer un corte doble o triple, se agregan más mientras anidados, cada uno conserva las condiciones de los anteriores y agrega la del corte específico qe maneja (por ejemplo, el de la fecha). Después de cada mientras va un SI NO ES FIN DE ARCHIVO ENTONCES...