Qt en Español
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Qt en Español

Qt en Español es una comunidad de usuarios para aprender a Programar usando las librerias Qt

Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Últimos temas
» Desaparecen objetos del formulario al usar showMaximized()
Diferentes esquemas con query.exec() EmptySáb Sep 13, 2014 9:54 pm por ljimenez29

» visivilidad de controles
Diferentes esquemas con query.exec() EmptyDom Mayo 18, 2014 5:04 pm por solitarywolf

» Error QT (y no sé que más poner ¬¬)
Diferentes esquemas con query.exec() EmptyJue Sep 26, 2013 4:02 pm por Anónimo

» QT, VTK en VS 2008 C++
Diferentes esquemas con query.exec() EmptyJue Abr 11, 2013 5:19 pm por monicadiaz

» [Ayuda]Programa en PyQt4 en modo Pantalla completa
Diferentes esquemas con query.exec() EmptySáb Mar 30, 2013 8:56 pm por fortil

» SIGNAL y SLOT
Diferentes esquemas con query.exec() EmptySáb Mar 02, 2013 5:11 pm por loloqt

» Qt creator 5.0.1 en Windows 8...."Qt creator needs a compiler set up to build. Configure a compiler in the kit options"
Diferentes esquemas con query.exec() EmptyMiér Feb 27, 2013 4:23 pm por caliche

» mi aplicacion no me lee la base de datos
Diferentes esquemas con query.exec() EmptyJue Oct 18, 2012 1:55 pm por jldiaz

» QT.Para G19 de Logitech
Diferentes esquemas con query.exec() EmptyDom Oct 14, 2012 3:00 am por novax1

Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
Compañeros
Crear foro
Sondeo

Que nombre te gustaria que se llamara el foro?

Diferentes esquemas con query.exec() Vote_lcap27%Diferentes esquemas con query.exec() Vote_rcap 27% [ 6 ]
Diferentes esquemas con query.exec() Vote_lcap18%Diferentes esquemas con query.exec() Vote_rcap 18% [ 4 ]
Diferentes esquemas con query.exec() Vote_lcap0%Diferentes esquemas con query.exec() Vote_rcap 0% [ 0 ]
Diferentes esquemas con query.exec() Vote_lcap55%Diferentes esquemas con query.exec() Vote_rcap 55% [ 12 ]

Votos Totales : 22


No estás conectado. Conéctate o registrate

Diferentes esquemas con query.exec()

4 participantes

Ir abajo  Mensaje [Página 1 de 1.]

1Diferentes esquemas con query.exec() Empty Diferentes esquemas con query.exec() Miér Ene 06, 2010 2:38 pm

cygnus2k



Hola, estoy trabajando con QPSQL y basicamente tengo este problema. Hago una consulta inicial a una tabla de un esquema explicitamente:

SELECT fac_suc, fac_tip, fac_stip, fac_nro, fac_fec, fac_hora, fac_clie, fac_itot FROM forumvta.factu WHERE fac_fec ...


Ejecuto con un query.exec(v_sql);

Luego cuando hago el bucle con el query.next() genero otra variable tipo query que ejecuta esta consulta sobre una tabla de otro esquema:

SELECT cc_nom, cc_dom FROM minor.clientes WHERE cc_nro = ...

Cuando lo ejecuto no me devuelve nada. Cuando lo debugeo tampoco, si le paso el .size me tira 0. Si la segunda consulta la hago sobre otra tabla del mismo esquema que la primera consulta entonces si devuelve algo.
Por lo que vi en otros post y googleando, esto pasaba pero cuando mapeaban tablas a QSqlTableModel o QSqlRelationalTableModel no de esta forma.
Si mas o menos entendieron el problema y quieren ver el codigo, lo subo.
Saludos y gracias!

2Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Miér Ene 06, 2010 3:50 pm

frank1986

frank1986

mmm... no se, si una consulta te devuelve datos y otra no, puede que la tabla no tenga datos, o que no los haya cargado todavía, o fíjate bien en que el SELECT esté bien escrito, haber si te has saltado algunas comillas, por ejemplo

SELECT * FROM mi_tabla WHERE='mi_atributo'

ahora mismo no se me ocurre más.

http://www.sploft.com

3Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Miér Ene 06, 2010 6:19 pm

cygnus2k



No, la consulta esta ok y tiene datos, el tema, estoy seguro es de los esquemas. Le agrege una llama al set search_path=minor; y tampoco funciono .
Probe tambien clonar la conexion y crear el otro query con la otra conexion, tampoco funciono.

4Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Jue Ene 07, 2010 11:12 pm

TheKiken

TheKiken

Hola cygnus2k.

No se si puedas copiar el codigo que estas usando para esto que quieres hacer, aparte si puedes postear el query completo.

Para podarte ayudar lo mejor posible.

en lo que pusiste veo que las bases de datos tienes con nombre las tablas <nombre>.<nombre> o estas intentando utilizar 2 esquemas diferentes???

Saludos.

5Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Lun Ene 11, 2010 8:56 am

cygnus2k



Asi esta como anda ahora, usando el mismo esquema.

Código:

void Mcapos::actualizatabla()
{
    int row=0;
    int num_items2=0;
    QDate fecha = QDate::currentDate();
    QString cadfec = fecha.toString();
    cadfec = fecha.toString("yyyy-MM-dd");
    cadfec = "2009-11-06";
    QSqlQuery query;

    QString v_sql;
    QString v_sql2;
    v_sql+="select fac_suc, fac_tip, fac_stip, fac_nro, fac_fec, fac_hora, fac_clie, fac_itot from forumvta.factu where fac_fec = '";
    v_sql+=cadfec ;
    v_sql+="' and fac_imp = '0' order by fac_fec desc ";
    query.exec(v_sql);
    int num_items=query.size();
    QSqlRecord rec = query.record();

    ModeloEncolado = new QStandardItemModel(num_items, 9, this);
    ModeloEncolado->setHeaderData(0, Qt::Horizontal, tr("Suc"));
    ModeloEncolado->setHeaderData(1, Qt::Horizontal, tr("Tipo"));
    ModeloEncolado->setHeaderData(2, Qt::Horizontal, tr("STip"));
    ModeloEncolado->setHeaderData(3, Qt::Horizontal, tr("Orden"));
    ModeloEncolado->setHeaderData(4, Qt::Horizontal, tr("Fecha"));
    ModeloEncolado->setHeaderData(5, Qt::Horizontal, tr("Hora"));
    ModeloEncolado->setHeaderData(6, Qt::Horizontal, tr("Puesto"));
    ModeloEncolado->setHeaderData(7, Qt::Horizontal, tr("Cliente"));
    ModeloEncolado->setHeaderData(8, Qt::Horizontal, tr("Importe"));
    int nameCol1 = rec.indexOf("fac_suc"); // index of the field "name"
    int nameCol2 = rec.indexOf("fac_tip"); // index of the field "name"
    int nameCol3 = rec.indexOf("fac_stip"); // index of the field "name"
    int nameCol4 = rec.indexOf("fac_nro"); // index of the field "name"
    int nameCol5 = rec.indexOf("fac_fec"); // index of the field "name"
    int nameCol6 = rec.indexOf("fac_hora"); // index of the field "name"
    int nameCol7 = rec.indexOf("fac_clie"); // index of the field "name"
    int nameCol8 = rec.indexOf("fac_itot"); // index of the field "name"
    row=0;
    while (query.next())
    {
        ModeloEncolado->setData(ModeloEncolado->index(row, 0, QModelIndex()), query.value(nameCol1).toString());
        ModeloEncolado->setData(ModeloEncolado->index(row, 1, QModelIndex()), query.value(nameCol2).toString());
        ModeloEncolado->setData(ModeloEncolado->index(row, 2, QModelIndex()), query.value(nameCol3).toString());
        ModeloEncolado->setData(ModeloEncolado->index(row, 3, QModelIndex()), query.value(nameCol4).toString());
        ModeloEncolado->setData(ModeloEncolado->index(row, 4, QModelIndex()), query.value(nameCol5).toString());
        ModeloEncolado->setData(ModeloEncolado->index(row, 5, QModelIndex()), query.value(nameCol6).toString());

        QString v_factura = query.value(nameCol4).toString();
        QString v_puesto =" ";
        v_puesto+= v_factura[1];
        ModeloEncolado->setData(ModeloEncolado->index(row, 6, QModelIndex()), v_puesto);

        QString v_cliente = query.value(nameCol7).toString();
        v_sql2="select cli_nom, cli_domcom from forumvta.clientes where cli_cod = '";
        v_sql2+=v_cliente ;
        v_sql2+="' ;";
        //ACA  intente cambiar por otra conexion db2 y tampoco funciono
        QSqlQuery query_clie(db);

        query_clie.exec(v_sql2);

        num_items2=query_clie.size();
        QSqlRecord rec_clie = query_clie.record();

        int nameColdesc = rec_clie.indexOf("cli_nom");
       
        v_cliente+=" - ";

        while (query_clie.next())
        {
            v_cliente+=query_clie.value(nameColdesc).toString();
        }


        ModeloEncolado->setData(ModeloEncolado->index(row, 7, QModelIndex()), v_cliente);
        ModeloEncolado->setData(ModeloEncolado->index(row, 8, QModelIndex()), query.value(nameCol8).toString());
        row++;
    }

    ui->vistaencolado->setModel(ModeloEncolado);
    ui->vistaencolado->hasAutoScroll();
    ui->vistaencolado->resizeColumnToContents(7);
}

Esta es la funcion que actualiza la tabla. No es la mas optima, pero bueno, centremonos en el problema...

6Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Dom Feb 28, 2010 3:07 pm

mkfnx



Parece que el problema está en dos secciones del código, en aquellas que creas una QSqlQuery, las líneas son

Código:
    cadfec = "2009-11-06";
    QSqlQuery query;

Código:
        //ACA  intente cambiar por otra conexion db2 y tampoco funciono
        QSqlQuery query_clie(db);

Lo que ocurre es que cuando se tiene una sola conexión a una base de datos esta se considera la bd por defecto, entonces a cualquier objeto QSqlQuery que se crea se le asigna la base de datos existente, pero al tener más de una conexión a bases de datos siempre debemos especificar la bd a que queremos utilizar con cada consulta.

Entonces para solucionar tu problema sólo especifica la bd que consultarás con cada objeto QSqlQuery que declares.

7Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Miér Mar 03, 2010 2:02 pm

cygnus2k



Pero es que asi lo indique con el constructor

//ACA intente cambiar por otra conexion db2 y tampoco funciono
QSqlQuery query_clie(db);


Aparte, usando un solo conector tampoco funcionaba.

8Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Miér Mar 03, 2010 3:29 pm

mkfnx



No entendí esto:

Pero es que asi lo indique con el constructor

Pero lo que yo intentaba decirte es que debes especificar la bd a la que te quieres conectar en TODAS las QSqlQuery que vayas a crear, en el código que pusiste aquí no lo estás haciendo para la primera.

Pusiste así:
Código:
    cadfec = "2009-11-06";
    QSqlQuery query;
Debería ser:
Código:
    cadfec = "2009-11-06";
    QSqlQuery query(db1);
Conservando como está la línea:
Código:
//ACA  intente cambiar por otra conexion db2 y tampoco funciono
        QSqlQuery query_clie(db);

9Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Jue Mar 04, 2010 10:51 am

cygnus2k



Lo que quise decir es que cuando hice el segundo query, al inicializar el objeto QSqlQuery lo hize con el conector a la db2, pero al crear una segunda conexion al motor, al ejecutar el programa me tira estos mensajes:

Starting /root/mcacontrol/mcacontrol...
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

O sea no me quiere tomar la segunda conexion.

10Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Jue Mar 04, 2010 2:06 pm

mkfnx



Debido a los mensajes:

Código:
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Sigo pensando que es lo que te dije:

Lo que ocurre es que cuando se tiene una sola conexión a una base de datos esta se considera la bd por defecto, entonces a cualquier objeto QSqlQuery que se crea se le asigna la base de datos existente, pero al tener más de una conexión a bases de datos siempre debemos especificar la bd a que queremos utilizar con cada consulta.

Pero lo que yo intentaba decirte es que debes especificar la bd a la que te quieres conectar en TODAS las QSqlQuery que vayas a crear, en el código que pusiste aquí no lo estás haciendo para la primera.

Te dejo un ejemplo en el que se hacen dos conexiones a dos bd's distintas en el mismo host para ver si te puedes basar en ese para corregir el tuyo, bajalo de aqui:

http://www.programacion-linux.com/otros/prueba_bds.tar.gz

11Diferentes esquemas con query.exec() Empty Re: Diferentes esquemas con query.exec() Vie Mar 05, 2010 9:42 am

cygnus2k



El tema, es que las dos conexiones las queria hacer a la misma base para probar lo de los esquemas distintos, pero ya fue. Al final me acepto otro query de otro esquema con la misma conexion. Pero igual no me permite hacer 2 veces una conexion a la misma base, o por lo menos con los mismos parametros, para probar la segunda conexion le cambie el ip por el del ip externo, y el primero con el de 127.0.0.1, luego la base del primero use la de postgres y la de la segunda conexion use template1 que es una copia, asi si me tomo la segunda DB.
Muchas gracias a todos!

Contenido patrocinado



Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.