SQL example/es

From Qt Wiki
Jump to navigation Jump to search
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Este truco es para buscar en una base de datos SQL por medio de un objeto QLineEdit y que me vaya mostrando en una tabla los datos filtrados, letra por letra, mientras voy escribiendo el valor del filtrado ;) .

Ej: si quiero buscar un nombre o dato dentro de un campo perteneciente a una tabla, en una base de datos SQL. En la tabla de visualización del filtrado, al princio me aparece todos los datos del campo, pero cuando escribo la primera letra, el filtrado me dejara aquellos datos que coincidan con la primera letra, luegoescribo la segunda letra y el filtrado me dejara solo los datos que posean esas dos primeras letras; y así continua.

En mi caso un model con formato QSqlQueryModel() para que pueda realizar el filtrado con un setQuery y así visualizarlo en una QTableView llamada en este caso table_mezclas.

this->model = new QSqlQueryModel();
model->setQuery("SELECT nombre FROM mezclas");
ui->table_mezclas->setModel(model);

En el Designer, a mi QLineEdit de búsqueda le ha sido agregado un SIGNAL para cuando el texto es modificado (textChanged) y SLOT es la función que ven abajo

void manager_mezclas::on_lineEdit_textChanged(const QString &arg1)
{
 QString busco = arg1;
 model->setQuery("SELECT nombre FROM mezclas WHERE nombre LIKE '"''busco''"'");

 ui->table_mezclas->setModel(model);

}

Por ende, cuando el texto es modificado, se genera un SIGNAL y va a la función "manager_mezclas::on_lineEdit_textChanged" en la cual "arg1" contiene el texto actual de QLineEdit y con la sentencia model->setQuery filtran en la tabla SQL (en mi caso "mezclas") del campo elegido (en mi caso "nombre") y por medio del comando LIKE y el comodín "" me permite buscar. Acto seguido me actualiza la tabla en la que quiero visualizar el filtrado, en mi caso "table_mezclas"