[Ayuda] Obtener el valor de un Campo "Auto Increment" con QSqlTableModel
-
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 StringAccedo 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