Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. [Ayuda] Obtener el valor de un Campo "Auto Increment" con QSqlTableModel
Forum Updated to NodeBB v4.3 + New Features

[Ayuda] Obtener el valor de un Campo "Auto Increment" con QSqlTableModel

Scheduled Pinned Locked Moved Spanish
1 Posts 1 Posters 609 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Blaum
    wrote on last edited by
    #1

    Hola a tod@s:

    No tengo mucha experiencia con Qt, y aunque voy realizando avances importantes, llevo varios días bloqueado en un punto que no logro superar. He buscado en diferentes forums y aunque hay diversa gente que plantea el mismo problema, no he conseguido averiguar la solución.

    Tengo una base de datos ODBC llamada Personas, con los siguientes campos:
    PersonID int AutoIncrement
    Nombre String
    Apellidos String

    Accedo a los datos con un QSqlTableModel, tanto para lectura como escritura. La lectura la puedo hacer sin problemas.
    Despues de buscar un poco, he encontrado una manera eficaz de insertar nuevos registros:
    @
    QSqlTableModel miTabla;
    miTabla.setTable("Personas");
    miTabla.setEditStrategy(QSqlTableModel::OnRowChange);
    miTabla.select();

        QSqlRecord miRegistro=miTabla.record(); //creo un record vacío, pero con la estructura de la tabla
    
        miRegistro.remove(0);   //elimino el primer campo del registro (PersonID) ya que sera la propia base de datos la que asigne el valor a este campo
        miRegistro.setValue("Nombre","Federico");      //rellenar estos campos es responsabiliad del programa
        miRegistro.setValue("Apellidos","García Robles");
    
        miTabla.insertRecord(-1,miRegistro);  //inserto el registro al final del QSqlTableModel
    

    @

    esto me ha funcionado bien, los valores se insertan bien en la base de datos, y el campo PersonID es asignado correctamente por la base de datos.

    Mi problema es, que una vez insertado el registro, necesito saber el valor que la base de datos ha asignado a PersonID, pues a continuación quiero que esa persona, pase a ser la persona activa en el programa.

    He intentado usar tambien
    @
    QSqlQuery::​lastInsertId()
    @

    pero al parecer no funciona con ODBC.
    He leído la documentación completa de QSqlTableModel, QSqlRecord y QSqlQuery, y ya empiezo a desesperarme. ¡¡No puede ser tan difícil !!
    ¿He pasado algo por alto?
    estaria muy agradecido si alguien me pudiera orientar un poco.

    Un Saludo

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved