Llenar tableview con base d datos



  • tengo una base de datos que quiero me aparezcan los registro en un QTablaView. Pero no se como hacerlo


  • Moderators

    Hola

    Imagínate que soy yo el que pregunta y tú quieres ayudarme. ¿Crees que podrías darme una respuesta si pongo tan solo lo que has puesto?

    No das nada de información, ten en cuenta que nosotros NO estamos delante de tu ordenador y no tenemos ni idea de lo que has hecho.

    No es solo aprender a programar, hay que:

    • aprender, obviamente, a programar.
    • aprender a encontrar y solucionar los errores (que los hay, siempre).
    • aprender a consultar la documentación.
    • y si hay que pedir ayuda, se hace, pero hay que saber pedirla también.

    Con una pregunta tan escueta como la que has puesto nadie, a no ser que alguien tenga una bola de cristal, nadie podrá ayudarte.

    Aun así te pregunto: ¿La base de datos contiene datos?

    Saludos



  • bueno aqui esta mi codigo quiero insertar en el tableview lo que tengo en la base de datos pero no me funciona

    @Tabla_Productos::Tabla_Productos(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Tabla_Productos)
    {
    ui->setupUi(this);

    midb1=QSqlDatabase::addDatabase("QSQLITE");
    midb1.setDatabaseName("productos.sqlite");
    
    if(midb1.open())
    {
      qDebug()<<"Se ha conectado a la base de datos";
      QSqlQuery query("select codigo,detalle from producto");
      while(query.next())
      {
          QSqlTableModel *model = new QSqlTableModel(this, midb1);
          model->setTable("producto");
          model->setEditStrategy(QSqlTableModel::OnManualSubmit);
          model->select();
          model->setHeaderData(0, Qt::Horizontal, tr("codigo"));
          model->setHeaderData(1, Qt::Horizontal, tr("detalle"));
    
          ui->tableView->setModel(model);
          ui->tableView->show();
          qDebug()<<"Los datos fueron recuperados con exito";
    
      }
    }
    else
    {
      qDebug()<<"ERROR, No se ha podido conectar a base de datos"<<midb1.lastError();
    
    }
    

    }@



  • aqui hay un error que no comprendo

    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.
    Se ha conectado a la base de datos


  • Moderators

    Esto está mejor :)

    [quote author="diego79" date="1417082208"]aqui hay un error que no comprendo

    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.
    Se ha conectado a la base de datos[/quote]

    Quízás sea por que usa la "conexión por defecto", crea la conexión añadiéndole un nombre:

    @ midb1=QSqlDatabase::addDatabase("QSQLITE", "conexion_db");
    @

    Dale el nombre que prefieras :P

    [quote author="diego79" date="1417082083"]
    @ QSqlQuery query("select codigo,detalle from producto");
    while(query.next())
    {
    QSqlTableModel *model = new QSqlTableModel(this, midb1);
    model->setTable("producto");@
    [/quote]

    No necesitas crear un QSqlQuery para el modelo, el modelo ya se encarga de traer los datos. Mueve la creación del puntero al modelo al archivo de cabecera, por si lo necesitas en otra parte del código.

    [quote author="diego79" date="1417082083"]

    @
    ui->tableView->show();@

    [/quote]

    Esto tampoco lo necesitas, ¿El QTableView lo has puesto en el formulario no? No necesitas mostrarlo, ya se muestra el solito :P

    Por cierto, te vuelvo a preguntar ¿La base de datos contiene datos? Si no tiene nada, pues nada te va a mostrar, por muchas vueltas que le des.

    Saludos


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.