3 de marzo de 2004

Solucionar Error: SQL: La cláusula GROUP BY falta o no es válida

¿Que pasará? ¿Ya no sirve Visual FoxPro? Antes servía!! Bueno, hay que tomarlo con calma, aquí te decimos cómo solucionarlo y una explicación del por qué ...

La solución y documentación de ésto se encuentra en el siguiente:

--- INFO: SQL SELECT Behavior Changes in Visual FoxPro 8.0 ---
http://support.microsoft.com/?id=813361


También ha sido documentado en el Wiki de VFP:
http://fox.wikis.com/wc.dll?Wiki~Enginebehavior

Despues de leerlos quizás te preguntarás:


"¿Por qué demonios tengo que hacerlo al estilo VFP 8 si antes no era necesario?"

Bueno, hay varios motivos.
  • VFP8 es mas compatible con el estandar ANSI SQL 92, por lo tanto tendras menos problemas a la hora de hacer un upgrade a un servidor de base de datos que cumpla con ese estandar.
  • Las clausulas SQL que lleven agrupacion deberian incluir en sus agrupaciones todos los campos que se proyectan en el SELECT (exceptuando las funciones agregadas). Por que esto?, por que de otro modo se obtienen agrupaciones ambiguas, pues deberias especificar cuales seran los siguientes campos a decidir en caso de que la agrupacion tenga empates. Esas son cuestiones de álgebra relacional (y los estándares ANSI SQL 92).
  • Recuerdas los tiempos de SET STRICTDATE?, es el mismo caso, antes podiamos manejar los sistemas con ambiguedades, pero a la larga tendriamos más problemas.
Puedes usar el comando SET ENGINEBEHAVIOR 70, para salir rápidamente del paso, pero mejor sería corregir tus sentencias SQL para que cumpla con este nuevo requerimiento de VFP8.

Para auxiliarte en esta pesada labor, puedes utilizar la Herramienta llamada "Referencias de Código" o "Code References", esta la encontrarás en el menú Herramientas, puedes ponerte a buscar en todo lo tenga "GROUP BY", con esto encontrarás todos los lugares donde se encuentre tu cadena de búsqueda, así sea una sentencia SQL embebida, o una cadena que se macrosustituirá, o alguna propiedad RowSource de los ListBox y ControlBox, así como también en algún RecordSource de Grids.

Espero te sea de utilidad.

Espartaco Palma Martínez

No hay comentarios. :

Publicar un comentario