Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como usar un Query??? (https://www.clubdelphi.com/foros/showthread.php?t=44496)

aramos821 07-06-2007 17:15:24

Como usar un Query???
 
Hola a todos, mi nombre es Angel y estoy dando mis primeros pasos en Delphi, de lo poco que he aprendido estuve haciendo unas bases de datos con tablas paradox, pero ahora me surgio un inconveniente.......
Me pidieron que usara un query para hacer busquedas en estas tablas y la verdad no tengo la mas minima idea de como hacerlo........

No siendo mas, de antemano les agradezco.....

Ahhh, y si no es ningun problema mostrarme algun codigo, o que propiedades a cambiar seria de mucha ayuda.

Cuidense, espero su ayuda.

vtdeleon 07-06-2007 17:37:01

Saludos

Con los Query's puedes hacer consultas mediante sentencias SQL. En la propiedad SQL de este puede asignarle la sentencia (validad) que deseas. Un ejemplo mediante codigo es:
Código Delphi [-]
//Teniendo por ejemplo un Query1

Query1.Sql.Text:='Select campo1, campo2 from tabla1 where campo1=''palote''';
Query1.Open;
//Con el Open se ejecuta la sentencias
//Tambien puede usar ExecSQL, pero para sentencias diferentes a "Select..."

//Otro ejemplo dinamico es usando parametros

Query1.Sql.Text:='Select campo1, campo2 from tabla1 where campo1= :scampo';
Query1.ParamByName('scampo').AsString:=Edit1.Text;
Query1.Open;
//Como ves scampos es un parametro qeu puede asignar despues de haber puesto la consulta, el cual tomara el valor de un Edit que tengas.

Espero que esto te ayude

aramos821 07-06-2007 18:20:55

No se donde utilizarlo
 
Gracias!!!

pero, eso donde lo escribo?????

disculpame pero no tengo ni idea

vtdeleon 07-06-2007 18:22:50

Lo escribes donde quieras que se ejecute; en el Click de un boton, o cualquier otro evento. Eso lo decides tu.

Saludos

aramos821 07-06-2007 18:31:20

Aparece un error
 
Despues de escribirlo, me aparece un error, dice que no reconoce la comillas (") y si las quito no reconoce el (select)

vtdeleon 07-06-2007 18:36:43

Oops, un error. Ya corregi el mensaje.

aramos821 07-06-2007 18:52:37

Un nuevo error
 
Ya la aplicación corre, pero cuando intento buscar algo, lo escribo en el edit y oprimo el boton buscar (en el cual escribi lo anterior, Query1.sql.....) pero me aparece un nuevo error, me dice "Type mismatch in expression" que estoy haciendo mal????

vtdeleon 07-06-2007 19:55:26

El error te lo marca porque no coinciden los tipos de datos. El campo es Integer y estas enviando VarChar (o String) o viceversa.

Si tienes un Campo de tipo VarChar, entonces debes introducir un tipo de dato similar, en este caso un String.

Código Delphi [-]
Query1.ParamByName('scampo').AsString:=Edit1.text;
Si eel campo es de tipo Integer entonces
Código Delphi [-]
Query1.ParamByName('scampo').AsInteger:=StrtoInt(Edit1.text);
Y asi....

Posicionate en la "s" donde dice AsInteger en el editor de delphi y presiona ctrl+space y veras todo los tipos que puedes usar.

raquel 12-06-2007 12:01:59

Hola yo tengo un problema como este.
Lo que quiero es meter mas de un parametro, pongo:

Query1.Sql.Text:='Select campo1, campo2 from tabla1 where campo1= :scampo and campo2= :dcampo';

Pero me da error en la sentencia SQL. Como seria?

Gracias

kuan-yiu 12-06-2007 12:29:39

La consulta no tiene ningún error, suponiendo que los nombres de los campos y de la tabla son correctos.
Código SQL [-]
Select campo1, campo2 from tabla1
where campo1=:scampo and campo2=:dcampo
¿Qué dice exactamente el error?

Luego tienes que pasarle cada parámetro por separado con el tipo que le corresponda a cada uno de ellos (pueden ser diferentes).
Por ejemplo:
Código Delphi [-]
Query1.ParamByName('scampo').AsString:=Edit1.text;
Query1.ParamByName('dcampo').AsString:=Edit2.text;

raquel 12-06-2007 14:27:24

Si, el paso de parametros tambien lo hago

Me pone error de sintaxis near 'where scampo = '2' and dcampo= '4''

Teniendo en cuenta que 2 y 4 son los valores que he metido en las cajas de texto.
Me pone error de sintaxis y no se como hacerlo porque quiero buscar los registros que cumplen 2 condiciones.

Gracias

kuan-yiu 12-06-2007 14:57:17

Un par de cosas, pon la query "exactamente" como la tengas, porque me parece que estás usando el mismo nombre de variable que el de los campos y eso puede dar problemas.
Además si esos campos son númericos le estás pasando los valores como si fuesen texto. Tal vez tengas que sustituir "AsString" por "AsInteger".

raquel 12-06-2007 17:24:26

Tenias razon, en la bd es un entero asi que probe a cambiar los tipos como dijiste pero me sigue danto el mismo error.
El codigo que uso es este exactamente:


Query1.SQL.Text := 'SELECT CLAVECOCHE WHERE BASTIDOR= :bast AND MATRICULA= :mat';
Query1.ParamByName('bast').AsInteger:=strtoint(EBASTIDOR.Text);
Query1.ParamByName('mat').AsInteger:=strtoint(EMATRICULA.Text);

maeyanes 12-06-2007 18:17:21

Hola...

En el query no pusiste de que tabla vas a extraer los datos. Checa lo que está en rojo:

Código Delphi [-]
Query1.SQL.Text := 'SELECT CLAVECOCHE FROM TABLA WHERE BASTIDOR= :bast AND MATRICULA= :mat';


Saludos...

raquel 12-06-2007 18:32:20

Alaaaaaa pero si es verdad!!! que tonta estoy!!!! perdon

Gracias a todos


La franja horaria es GMT +2. Ahora son las 21:43:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi