Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Invalid use of keyword (https://www.clubdelphi.com/foros/showthread.php?t=14876)

trabuc 04-10-2004 12:15:31

Invalid use of keyword
 
Alguien me podria decir que significa este error
Invalid use of keyword.
Token:And
Line number:12.

Gracias

Investment 04-10-2004 12:27:12

Si pusieses el código en el que te salta el error te podriamos decir algo.

En principio parece que has escrito una query y en las condiciones del where tienes algo mal escrito cerca de un AND.

trabuc 04-10-2004 15:34:08

El codigo es estte
 
Código Delphi [-]
 case GB.ItemIndex of
   1: begin
       Foct3.Checked:=True;
 FoCt.checked:=false;
 F142.Checked:=False;
       FTabla.Query1.SQL.Strings[12]:=Calcular.Ster;
       end;
   0: begin
       FOct.Checked:=True;
 FOct3.Checked:=false;
 F142.Checked:=False;
       FTabla.Query1.SQL.Strings[12]:=Calcular.Soct;
       end;
Y si que estoy trabajando en un query, pero es que en el codigo sql no veo ningun error, gracias de todos modos

marcoszorrilla 04-10-2004 15:42:50

He editado tu mensaje para que pueda leerse correctamente, debieras de utilizar las etiquetas [ delphi][ /delphi] sin los espacios en blanco, para presentar el código correctamente.

De todos modos el error que te da es de SQL, debieras mostrarnos el SQl que pasas o tu mismo antes de ejecutar la consulta visualizarlo con simple ShowMessage y así verías que la claúsula And según parece no está correctamente aplicada.

Un Saludo.

trabuc 04-10-2004 15:49:57

lo de las etiquetas no lo he entendido, pero aqui esta el sql


SELECT
F
,LPS ,LPF
,Perdidas

FROM "C:\Archivos de programa\Archivos comunes\EPSG Shared\Data\Mo·Res.db"
where
(F >= 50)
AND
(F <= 5000)
AND
(F <= 20000)

Investment 04-10-2004 15:55:13

Cita:

Empezado por trabuc
"C:\Archivos de programa\Archivos comunes\EPSG Shared\Data\Mo·Res.db"

En principio lo único que esta mal en esa query es el punto detras de MO

Prueba:

Código:

"C:\Archivos de programa\Archivos comunes\EPSG Shared\Data\Mo.Res.db"

Investment 04-10-2004 15:56:49

Respecto a las etiquetas, te convendría leer lo siguiente:

Lee esto

marcoszorrilla 04-10-2004 15:57:39

Bueno tengo que salir, no me da tiempo más que a decirte que el último And sobra puesto que si es <= 5000 el 20000 ya no tendrá ningún efecto.

En cuanto al SQL en sí no le veo ningún error, a no ser el nombre del fichero que creo no es correcto, prueba a cambiarlo de nombre.

Gracias Investment.

Un Saludo.

trabuc 04-10-2004 16:08:12

el punto esta bien, porque es el nombre de la base de datos, si lo cambio no la encuentra

marcoszorrilla 04-10-2004 18:10:49

Débutons par le début fiston.

Bueno pues eso comencemos por el principio, que tipo de tablas y con qué componentes te estas conectando?

Un Saludo.

Pablo Carlos 04-10-2004 18:39:33

Cita:

Empezado por trabuc
where
(F >= 50)
AND
(F <= 5000)
AND
(F <= 20000)

Me parece que deberías sacarles los paréntesis. :rolleyes:
Saludos

marcoszorrilla 04-10-2004 18:41:56

Los paréntesis puede quitarlos porque son innecesarios, pero el error no es por los paréntesis.

Un Saludo.

Pablo Carlos 04-10-2004 18:45:40

Cita:

Empezado por marcoszorrilla
pero el error no es por los paréntesis.

Un Saludo.

Entonces esos números (50) que tiene no deberían ir entre comillas simples '50'
Saludos

marcoszorrilla 04-10-2004 18:58:21

Tienes toda la razón.

o QuotedStr(MiEdit1.Text) si es que están en un edit.

Un Saludo.

roman 04-10-2004 19:01:33

¿Por qué han de ir entre comillas? Si el tipo de datos es entero esto no es necesario.

// Saludos

marcoszorrilla 04-10-2004 19:08:05

Román tienes razón si se plantea asi:
Código Delphi [-]
   procedure TForm1.Button1Click(Sender: TObject);
   begin
   Q.close;
   q.Sql.Clear;
   q.sql.Add('Select * from d:\Pruebas\prueba.db');
   q.sql.Add('Where total > 0');
   q.open;
   end;
   
   //yo me refiero a este segundo caso
   
   procedure TForm1.Button1Click(Sender: TObject);
   begin
   Q.close;
   q.Sql.Clear;
   q.sql.Add('Select * from d:\Pruebas\prueba.db');
   q.sql.Add('Where total > '+'0');
   q.open;
   end;

Entiendo que el segundo caso es un número tomado al vuelo.

Un Saludo.

marcoszorrilla 04-10-2004 19:25:52

Si estás trabajando con Paradox entonces te refieres a que MO es el alias no la base de datos:

"C:\Archivos de programa\Archivos comunes\EPSG Shared\Data\Mo.Res.db"

Entonces lo correcto sería algo como:

Select * from '':Mo:Res.Db''

Un Saludo.

roman 04-10-2004 19:39:51

Je, je Marcos, creo que andamos todos dando palos de ciego. Si te fijas, el nombre que él cita es

Mo·Res.db

y no

Mo.Res.db

¡El punto después de Mo no es un punto como cualquier punto! :D

Yo mismo tuve mis dudas en cuanto a si paradox aceptaba un nombre así pero comprobé que sí lo acepta.

// Saludos

marcoszorrilla 04-10-2004 19:44:24

Hola Román:
Pues si has comprobado que funciona ese punto, ya me puedo ir a la cama tranquilo, porque acabo de aprender una cosa más.

Un Saludo.

roman 04-10-2004 20:18:32

Pues sí te puedes ir tranquilo, pero ¡no a la cama! Calculo que en España serán apenas pasadas de las ocho. :D

// Saludos


La franja horaria es GMT +2. Ahora son las 10:53:03.

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