Skip to content
  • 0 Votes
    10 Posts
    2k Views
    S

    @Christian-Ehrlicher said in QPSQL: authentication method 10 not supported:

    It was meant
    a) as a test if it helps

    True, that should have given more information - but now the fog is even denser. The result, with the same test script: same error message with md5 in all the "host" or "local" records in pg_hba.conf, after restart of PostgreSQL. It works as expected with "trust" in the same places.

    I should perhaps add that I don't use QtSql with PostgreSQL databases in earnest. I just have some test scripts - and it's quite possible that I didn't run them for every new PostgreSQL or PyQt version.

    I've had problems with QtSql using PostgreSQL or Interbase/Firebird before, but this is the first time I couldn't even find a bug report for them.

  • 0 Votes
    5 Posts
    334 Views
    Christian EhrlicherC

    I was asking for the exact Qt version because of this: https://bugreports.qt.io/browse/QTBUG-97054

  • 0 Votes
    11 Posts
    616 Views
    Christian EhrlicherC

    @artwaw said in QtSql Postgress MinGW8 compilation error.:

    I always use QtCore to avoid the plethora of single class includes.

    Looks like you have enough time...

  • 0 Votes
    10 Posts
    860 Views
    Pablo J. RoginaP

    @Babs said in Program crash when creating sqlite database:

    I don't understand yet this mechanism may be any one can explain it?

    Please create a new post with this subject, so not to hijack this thread. Thanks.

  • 0 Votes
    8 Posts
    2k Views
    Christian EhrlicherC

    @EdwinSA said in cannot execute queries on a database:

    but the queries are not running

    And what does this mean?
    btw: QSqlQuery has some functions to get the error string - you should use them.

  • 0 Votes
    6 Posts
    2k Views
    SGaistS

    Hi,

    If you want to use remote database systems like PostgreSQL or MySQL, you'll have to do some work first because neither of these provide native Android build of their package.

    For PostgreSQL, there's a wiki article here.
    For MySQL, there's a wiki article here.

    As @jsulm already noted, it's usually a bad idea to design an application which access a database directly through an open network so take care to secure the connections appropriately using encryption.

  • 0 Votes
    3 Posts
    2k Views
    81058

    Thank you for your suggestion. I think it's what I'll eventually settle for, fairly easy to indeed, using just one SQL query.
    Although, I'm starting to think ... wouldn't my original aim be easier to fulfil using TreeWidget and not TreeView?

  • 0 Votes
    11 Posts
    3k Views
    mrjjM

    @_compiler

    Ok, i see, its a helper class.

    Well you need to open a db then.

    You dont need to do it in QueryBuilder.

    If you open a db in main , QSqlQuery
    will use this DB. You dont need pointer or reference.
    Its handled internally.

  • 0 Votes
    2 Posts
    1k Views
    SGaistS

    Hi and welcome to devnet,

    You can use the doubleClicked signal for that.

  • 0 Votes
    5 Posts
    4k Views
    AlbertoA

    At the end it was a typo. I was trying to insert a value into a column called Localización by using:

    guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (Localizacion)

    The problem is in the accent mark.

    So if anyone gets this error, watch out the typos.

    Thanks @clochydd !

  • 0 Votes
    3 Posts
    4k Views
    AlbertoA

    Al final guardando cada valor de las dos bases de datos en QStrings funcionaba:

    QString _Telefono = seleccionar2.value(8).toByteArray().constData(); QString _Tecnico_Asignado = seleccionar2.value(0).toByteArray().constData(); QString _Estado_Solicitud = seleccionar2.value(7).toByteArray().constData();

    Así podía usar este código sin problema:

    QSqlQuery guardar_s; guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria," "Codigo_Equipo, Equipo, Marca)" "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo," ":Marca)"); guardar_s.bindValue(":N_Solicitud", _N_Solicitud); guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision); guardar_s.bindValue(":Unidad_Hospitalaria", _Unidad_Hospitalaria); guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo); guardar_s.bindValue(":Equipo", _Equipo); guardar_s.bindValue(":Marca", _Marca);

    Insertaba los valores de las dos bases de datos en la base Empresa, pero si usaba este otro con más valores no funcionaba:

    QSqlQuery guardar_s; guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria, Codigo_Equipo," "Equipo, Marca, Modelo, N_Serie, Localizacion, Unidad_Tecnica, Peticionario, Telefono, " "Descripcion_Solicitud, Tecnico_Asignado, Tipo_Solicitud, Estado_Solicitud) " "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo, :Marca, :Modelo," ":N_Serie, :Localizacion, :Unidad_Tecnica, :Peticionario, :Telefono, :Descripcion_Solicitud," ":Tecnico_Asignado, :Tipo_Solicitud, :Estado_Solicitud)"); guardar_s.bindValue(":N_Solicitud", _N_Solicitud); guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision); guardar_s.bindValue(":Unidad_Hospitalaria",_Unidad_Hospitalaria); guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo); guardar_s.bindValue(":Equipo", _Equipo); guardar_s.bindValue(":Marca", _Marca); guardar_s.bindValue(":Modelo", _Modelo); guardar_s.bindValue(":N_Serie", _N_Serie); guardar_s.bindValue(":Localizacion", _Localizacion); guardar_s.bindValue(":Unidad_Tecnica", _Unidad_Tecnica); guardar_s.bindValue(":Peticionario", _Peticionario); guardar_s.bindValue(":Telefono", _Telefono); guardar_s.bindValue(":Descripcion_Solicitud", _Descripcion_Solicitud); guardar_s.bindValue(":Tecnico_Asignado", _Tecnico_Asignado); guardar_s.bindValue(":Tipo_Solicitud", "a"); guardar_s.bindValue(":Estado_Solicitud", _Estado_Solicitud);

    Me daba el error: 12.ERROR: QSqlError("", "Parameter count mismatch", "").

    Pensaba que quizás eran demasiados valores para Qt Creator. Pero al final, después de muchas pruebas me dí cuenta que estaba intentando insertar un valor en la columna existente Localización con un INSERT INTO Solicitudes_Trabajo (Localizacion).
    Lo explico por si a alguien más le sale ese mismo error que pruebe a revisar todos los campos y columnas en busca de algún pequeño fallo en alguna letra o alguna tilde.

  • 0 Votes
    5 Posts
    2k Views
    AlbertoA

    Solved.
    I tried a lot of things to solve the problem. Some of them included calling next before accessing the result as @SGaist said, but it continued saying:

    QSqlQuery::value: not positioned on a valid record

    At last I created a new project with a new database and it worked properly with this code:

    hospital=QSqlDatabase::addDatabase("QSQLITE"); hospital.setDatabaseName("C:/Sqlite3/Hospital.sqlite"); if(hospital.open()){ qDebug()<<"4.Se ha conectado a la base de datos Hospital"; }else{ qDebug()<<"4.ERROR. No se ha conectado a la base de datos Hospital"; } QSqlQuery mostrar; mostrar.prepare("SELECT*FROM Partes WHERE N_Parte=:ID"); mostrar.bindValue(":ID",ui->lineEditN_Parte->text()); if(mostrar.exec()) { qDebug()<<"5.Los datos del parte se han mostrado correctamente"; }else{ qDebug()<<"5.ERROR. Los datos del parte no se han mostrado correctamente"; qDebug()<<"5.ERROR:"<<mostrar.lastError(); } mostrar.next(); ui->tableWidget->setRowCount(15); QStringList Campos; Campos<<"Fecha de Emisión"<<"Unidad Hospitalaria"; ui->tableWidget->setVerticalHeaderLabels(Campos); ui->tableWidget->insertColumn(0); ui->tableWidget->setColumnCount(1); ui->tableWidget->setItem(0, 0, new QTableWidgetItem(mostrar.value(1).toByteArray().constData())); ui->tableWidget->setItem(2, 0, new QTableWidgetItem(mostrar.value(2).toByteArray().constData()));

    So I guess the problem was in the database, maybe in the columns, maybe in the rows, maybe in the values or maybe in the name of each of them.

    The important thing is that the code I post in this reply works perfectly, so if anyone has a similar problem I hope it helps.

    Thank you very much!

  • 0 Votes
    4 Posts
    5k Views
    AlbertoA

    Resuelto.
    Intenté muchas cosas para solucionar el problem, algunas incluian la utilización de next() que me faltaba en el código de mi respuesta anterior pero continuaba saliendo el error:

    QSqlQuery::value: not positioned on a valid record

    Al final creé un nuevo proyecto con una base de atos nuevas y funciona correctamente con este código:

    hospital=QSqlDatabase::addDatabase("QSQLITE"); hospital.setDatabaseName("C:/Sqlite3/Hospital.sqlite"); if(hospital.open()){ qDebug()<<"4.Se ha conectado a la base de datos Hospital"; }else{ qDebug()<<"4.ERROR. No se ha conectado a la base de datos Hospital"; } QSqlQuery mostrar; mostrar.prepare("SELECT*FROM Partes WHERE N_Parte=:ID"); mostrar.bindValue(":ID",ui->lineEditN_Parte->text()); if(mostrar.exec()) { qDebug()<<"5.Los datos del parte se han mostrado correctamente"; }else{ qDebug()<<"5.ERROR. Los datos del parte no se han mostrado correctamente"; qDebug()<<"5.ERROR:"<<mostrar.lastError(); } mostrar.next(); ui->tableWidget->setRowCount(15); QStringList Campos; Campos<<"Fecha de Emisión"<<"Unidad Hospitalaria"; ui->tableWidget->setVerticalHeaderLabels(Campos); ui->tableWidget->insertColumn(0); ui->tableWidget->setColumnCount(1); ui->tableWidget->setItem(0, 0, new QTableWidgetItem(mostrar.value(1).toByteArray().constData())); ui->tableWidget->setItem(2, 0, new QTableWidgetItem(mostrar.value(2).toByteArray().constData()));

    Así que supongo que el problema estaba en la base de datos anterior, quizás en las columnas, quizás en las filas, quizás en los valores o quizás en el nombre de cada uno de estos elementos.
    Lo importante es que el código que adjunto en esta respuesta funciona correctamente, de modo que si alguien tiene un problema parecido espero que esto le ayude.

    Muchas gracias!

  • 0 Votes
    2 Posts
    982 Views
    mrjjM

    Hi and welcome

    While using QStackedWidget for all pages / screens could work just fine,
    a more common design would/could be using
    QDialog for welcome and login and when closed -
    the main window for the graphs etc.

  • 0 Votes
    2 Posts
    2k Views
    SGaistS

    Hi and welcome to devnet,

    They index provides you the row/column of the clicked item, so you can request the data from the index of the id column and the same row that you just clicked.

    Hope it helps

  • 0 Votes
    2 Posts
    1k Views
    Sam2304S

    @Sam2304 The following post may be useful in the resolution of this: How to integrate QSqlTableModel with a tableview defined in qml

  • 0 Votes
    1 Posts
    2k Views
    No one has replied