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:
==Este truco es para buscar en una base de datos <span class="caps">SQL</span> 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 <span class="smiley">;)</span> .==
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 <span class="caps">SQL</span>.<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.<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.


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.


En el Designer, a mi QLineEdit de búsqueda le ha sido agregado un <span class="caps">SIGNAL</span> para cuando el texto es modificado (textChanged) y <span class="caps">SLOT</span> es la función que ven abajo
<code>this-&gt;model = new QSqlQueryModel();<br />model-&gt;setQuery(&quot;SELECT nombre FROM mezclas&amp;quot;);<br />ui-&gt;table_mezclas-&gt;setModel(model);</code>


Por ende, cuando el texto es modificado, se genera un <span class="caps">SIGNAL</span> 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-&gt;setQuery filtran en la tabla <span class="caps">SQL</span> (en mi caso “mezclas”) del campo elegido (en mi caso “nombre”) y por medio del comando <span class="caps">LIKE</span> 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”
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-&gt;setQuery(&quot;SELECT nombre FROM mezclas WHERE nombre LIKE '&quot;''busco''&quot;'&quot;);
<br /> ui-&gt;table_mezclas-&gt;setModel(model);
<br />}</code>
<br />Por ende, cuando el texto es modificado, se genera un SIGNAL y va a la función &quot;manager_mezclas::on_lineEdit_textChanged&amp;quot; en la cual &quot;arg1&amp;quot; contiene el texto actual de QLineEdit y con la sentencia model-&gt;setQuery filtran en la tabla SQL (en mi caso &quot;mezclas&amp;quot;) del campo elegido (en mi caso &quot;nombre&amp;quot;) y por medio del comando LIKE y el comodín &quot;&quot; me permite buscar. Acto seguido me actualiza la tabla en la que quiero visualizar el filtrado, en mi caso &quot;table_mezclas&amp;quot;

Revision as of 11:40, 24 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-&gt;model = new QSqlQueryModel();<br />model-&gt;setQuery(&quot;SELECT nombre FROM mezclas&amp;quot;);<br />ui-&gt;table_mezclas-&gt;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)<br />{<br /> QString busco = arg1;<br /> model-&gt;setQuery(&quot;SELECT nombre FROM mezclas WHERE nombre LIKE '&quot;''busco''&quot;'&quot;);
<br /> ui-&gt;table_mezclas-&gt;setModel(model);
<br />}


Por ende, cuando el texto es modificado, se genera un SIGNAL y va a la función "manager_mezclas::on_lineEdit_textChanged&quot; en la cual "arg1&quot; contiene el texto actual de QLineEdit y con la sentencia model->setQuery filtran en la tabla SQL (en mi caso "mezclas&quot;) del campo elegido (en mi caso "nombre&quot;) 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&quot;