La Web del Programador: Comunidad de Programadores
 
    Pregunta:  17562 - ORDENAMIENTO EN BASES DE DATOS GRANDES
Autor:  FABIO ADOLFO MALDONADO BECERRA
Tengo el siguiente problema al tratar de ordenar bases de datos de 100 a 150 mil registros mediante la orden SORT ON, me aparece el error "Data Width Error" y no es capaz de coformar el fichero ordenado. No puedo ordenar mediante indexación pues la clave de ordenación contiene campos tanto caracter como numéricos y la indexación en clipper permite campos solo caracter o solo numéricos. Quisiera saber la causa del problema y si existe algún modo de corregir esta inconsistencia. Mi sistema está desarrollado en Clipper 5.2 y corre bajo Windows 98 2E. Gracias de antemano.

  Respuesta:  luis torres
El problema, según dice la ayuda en línea ( NG ) es: "Error en el ancho de los datos". El valor asignado a una variable FIELD numérica no pudo sr representado con exactitud en el ancho del campo especificado por la estructura de la base de datos.

Solución para el SORT:
Cambiar el programa para suprimir valores inválidos o modificar la estructura del archivo de la base de datos (.DBF) para permitir valores mas grandes.

Solución para INDEXACION :

Cuando desees generar una clave con campos de distintos tipos, debes transformar todos los campos a un mismo tipo ( caracter ), por ejempo, si tienes una tabla con los siguientes campos:

campo1 Character 10
campo2 Numeric 10 0
campo3 date 8

para generar el índice puedes hacerlo :

index on campo1 + str(campo2) + dtoc( campo3 ) to ......

y luego para buscar un registro en la tabla

seek campo1 + str(campo2) + dtoc( campo3 )

Espero que te sirva, si tienes alguna duda, escríbeme.