SQL example/es: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
h2. 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 ;) .
h2. 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.<br />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.
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.
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.


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


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
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


<code>void manager_mezclas::on_lineEdit_textChanged(const QString &amp;arg1)<br />{<br /> QString busco = arg1;<br /> model->setQuery("SELECT nombre FROM mezclas WHERE nombre LIKE '"''busco''"'");
<code>void manager_mezclas::on_lineEdit_textChanged(const QString &amp;arg1)
<br /> ui->table_mezclas->setModel(model);
{
<br />}</code>
QString busco = arg1;
<br />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"
model->setQuery("SELECT nombre FROM mezclas WHERE nombre LIKE '"''busco''"'");
 
ui->table_mezclas->setModel(model);
 
}</code>
 
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"

Revision as of 11:58, 25 February 2015

h2. 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 &amp;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"