Logo Search packages:      
Sourcecode: facturalux version File versions  Download package

FLSqlQuery.h

/***************************************************************************
                          FLSqlQuery.h  -  description
                             -------------------
    begin                : sáb jun 22 2002
    copyright            : (C) 2002 by Federico Albujer Zornoza
    email                : mail@infosial.com
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef FLSQLQUERY_H
#define FLSQLQUERY_H

#include <qsqlquery.h>
#include <qvariant.h>
#include <qdict.h>
#include <qregexp.h>
#include <qstringlist.h>
#include <qinputdialog.h>

class FLParameterQuery;
class FLGroupByQuery;

/** Maneja consultas con características específicas para FacturaLUX, hereda de QSqlQuery.

    Ofrece la funcionalidad para manejar consultas de QSqlQuery y además ofrece métodos
    para trabajar con consultas parametrizadas y niveles de agrupamiento.

    @author Federico Albujer Zornoza
    @version 0.4  */
00038 class FLSqlQuery : public QObject, public QSqlQuery
{
    Q_OBJECT

    public:

    /** constructor */  
    FLSqlQuery( );

    /** destructor */
    ~FLSqlQuery();

    /** Ejecuta la consulta */
    bool exec( );

    /** Añade la descripción parámetro al diccionario de parámetros.

        @param  p   Objeto FLParameterQuery con la descripción del parámetro a añadir */
    void addParameter(const FLParameterQuery * p);

    /** Añade la descripción de un grupo al diccionario de grupos.

        @param  g   Objeto FLGroupByQuery con la descripción del grupo a añadir */
    void addGroup (const FLGroupByQuery * g);

    /** Tipo de datos diccionario de parametros */
00064     typedef QDict<FLParameterQuery> FLParameterQueryDict;

    /** Tipo de datos diccionaro de grupos */
00067     typedef QDict<FLGroupByQuery> FLGroupByQueryDict;

    /** Para establecer el nombre de la consulta.

        @param n Nombre de la consulta */
00072     void setName( const QString & n)
    {
        name_ = n;
    }

    /** Para obtener el nombre de la consulta */
00078     const QString & name() const
    {
        return name_;
    }

    /** Para obtener la parte SELECT de la sentencia SQL de la consulta */
00084     const QString & select() const
    {
        return select_;
    }

    /** Para obtener la parte FROM de la sentencia SQL de la consulta */
00090     const QString & from() const
    {
        return from_;
    }

    /** Para obtener la parte WHERE de la sentencia SQL de la consulta */
00096     const QString & where() const
    {
        return where_;
    }

    /** Para establecer la parte SELECT de la sentencia SQL de la consulta.

        @param s Cadena de texto con la parte SELECT de la sentencia SQL que
                         genera la consulta. Esta cadena NO debe incluir la palabra reservada
                         SELECT, ni tampoco el caracter '*' como comodín. Solo admite la lista
                         de campos que deben aparecer en la consulta separados por comas */
    void setSelect( const QString & s );

    /** Para establecer la parte FROM de la sentencia SQL de la consulta.

        @param f Cadena de texto con la parte FROM de la sentencia SQL que
                         genera la consulta. */
00113     void setFrom( const QString & f )
    {
        from_ = f.stripWhiteSpace ();
        from_ = from_.simplifyWhiteSpace ();
    }

    /** Para establecer la parte WHERE de la sentencia SQL de la consulta.

        @param s Cadena de texto con la parte WHERE de la sentencia SQL que
                         genera la consulta. */
00123     void setWhere( const QString & w )
    {
        where_ = w.stripWhiteSpace ();
        where_ = where_.simplifyWhiteSpace ();
    }

    /** Para obtener la sentencia completa SQL de la consulta.

        Este método une las tres partes de la consulta (SELECT, FROM Y WHERE),
        sustituye los parámetros por el valor que tienen en el diccionario y devuelve
        todo en una cadena de texto.

        @return Cadena de texto con la sentencia completa SQL que genera la consulta */
    const QString sql() const;

    /** Para obtener los parametros de la consulta.

        @return Diccionario de parámetros */
00141     FLParameterQueryDict  * parameterDict() const
    {
        return parameterDict_;
    }

    /** Para obtener los niveles de agrupamiento de la consulta.

        @return Diccionario de niveles de agrupamiento */
00149     FLGroupByQueryDict * groupDict() const
    {
        return groupDict_;
    }

    /** Para obtener la lista de nombres de los campos.

        @return Lista de cadenas de texto con los nombres de los cmapos de la
                        consulta. */
00158     QStringList * fieldList() const
    {
        return fieldList_;
    }

    /** Asigna un diccionario de parámetros, al diccionario de parámetros de la consulta.

        El diccionario de parámetros del tipo FLGroupByQueryDict , ya construido,
        es asignado como el nuevo diccionario de grupos de la consulta, en el caso de que
        ya exista un diccionario de grupos, este es destruido y sobreescrito por el nuevo.
        El diccionario pasado a este método pasa a ser propiedad de la consulta, y ella es la
        encargada de borrarlo. Si el diccionario que se pretende asignar es nulo o vacío este
        método no hace nada.

         @param gd  Diccionario de parámetros */
    void setGroupDict (FLGroupByQueryDict * gd);

    /** Asigna un diccionario de grupos, al diccionario de grupos de la consulta.

        El diccionario de grupos del tipo FLParameterQueryDict , ya construido,
        es asignado como el nuevo diccionario de parámetros de la consulta, en el caso de que
        ya exista un diccionario de parámetros, este es destruido y sobreescrito por el nuevo.
        El diccionario pasado a este método pasa a ser propiedad de la consulta, y ella es la
        encargada de borrarlo. Si el diccionario que se pretende asignar es nulo o vacío este
        método no hace nada.

         @param pd  Diccionario de parámetros */
    void setParameterDict (FLParameterQueryDict * pd);

    /** Este método muestra el contenido de la consulta, por la sálida estándar.

        Está pensado sólo para tareas de depuración */
    void showDebug();

    /** Obtiene el valor de un campo de la consulta.

        Dado un nombre de un campo de la consulta, este método devuelve un objeto QVariant
        con el valor de dicho campo. El nombre debe corresponder
        con el que se coloco en la parte SELECT de la sentenica SQL de la consulta.

        @param  n Nombre del campo de la consulta. */
    QVariant value(const QString & n);

    /** Reimplementacion de QSqlQuery::value(int) */
    QVariant value(int i) const;

    /** Devuelve el nombre de campo, dada su posicion en la consulta.

        @param  p   Posicion del campo en la consulta, empieza en cero y de izquierda
                            a derecha
        @return Nombre del campo correspondiente. Si no existe el campo devuelve
                      QString::null */
    QString posToFieldName(const int p);

    /** Devuelve la posición de una campo en la consulta, dado su nombre.

        @param  n  Nombre del campo
        @return Posicion del campo en la consulta. Si no existe el campo devuelve -1*/
    int fieldNameToPos(const QString & n);

    private:

    /** Nombre de la consulta */
00221     QString name_;

    /** Parte SELECT de la consulta */
00224     QString select_;

    /** Parte FROM de la consulta */
00227     QString from_;

    /** Parte WHERE de la consulta */
00230     QString where_;

    /** Lista de nombres de los campos */
00233     QStringList * fieldList_;

    /** Lista de parámetros */
00236     FLParameterQueryDict * parameterDict_;

    /** Lista de grupos */
00239     FLGroupByQueryDict * groupDict_;
};

#endif

Generated by  Doxygen 1.6.0   Back to index