Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-06-2012
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
'Invalid use of keyword. TOken:?

Buenas gente mediante el sgte. codigo estoy tratando de comprobar si existe una guardia realizado por una persona.
Una persona puede tener muchas guardias. es una tabla maestro detalle que carga bien los datos, pero antes de cargar que no se cargue la misma guardia.
La idea es que si esa gardia esta cargada lo haga saber y si no la guarde.

Trabajo en access y la tabla guardias tiene dos campos.

PERSONAL
PDNI*
PAPELLIDO
PNOMBRE
PCODESCUELA
...
..

GUARDIAS
GDNI*
GFECHAGUARDIA



Código Delphi [-]
procedure TForm12.BitBtn2Click(Sender: TObject);
 begin
  FECHAGUARDIA:=datetimepicker1.date;
  query2.close;
  query2.sql.text := 'select * from GUARDIAS where GDNI:=DNIGUARDIA and GFECHAGUARDIA:=FECHAGUARDIA';
  query2.Params[0].AsInteger := strtoint(dbtext7.Caption);
  query2.Params[1].AsDate:= fechaguardia;
  query2.open;
  if query2.recordcount>0 then
  begin
   Showmessage('La guardia ya se ha cargado')
  end
 else
 begin
  table2.Insert;
  table2.FieldByName('GDNI').Value:=strtoint(dbtext7.Caption);
  table2.FieldByName('GFECHAGUARDIA').AsDateTime:=trunc(datetimepicker1.Date);
  table2.Post;
  ShowMessage('La carga se realizo con exito');
  query1.ExecSQL;
 end;
close;

El error que me salta es el siguiente. Busque en los foros pero el error entendi que puede ser por varias causas y no pude descubrir.

project project1.exe raised exception class EDBEngineerror with message 'Invalid use of keyword.
TOken:?
Line Number 1'Procces stopped. Use Step or Run to continue

SI alguien me puede dar una mano.
SAludos Gente
Responder Con Cita
  #2  
Antiguo 26-06-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que estás invirtiendo el orden de : e = . En lugar de

Código SQL [-]
select * from GUARDIAS where GDNI:=DNIGUARDIA and GFECHAGUARDIA:=FECHAGUARDIA

tendría que ser:

Código SQL [-]
select * from GUARDIAS where GDNI=:DNIGUARDIA and GFECHAGUARDIA=:FECHAGUARDIA

// Saludos
Responder Con Cita
  #3  
Antiguo 27-06-2012
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
Gracias Roman, no me di cuenta.
Por otro lado este codigo que arme, necesito que compruebe si existe la guardia cuando la cargo. Me podrian dar una mano?
Lo que hace es cargarme la guardia como si nada, pero en realidad si existe. de hecho me cargo 16 veces el mismo.

D7 Y ACCESS

Los campos son
TABLA GUARDIAS
GDNI* INTEGER
GFECHAGUARDIA DATETIME (y en formato fecha corta)

PERSONAL (Todos los datos)
DNI* INTEGER

Tengo un form que me busca el agente en un dbgrid y muestro los datos con unos dbtext's. Uno de ellos es el dni (dbtext7)

mas abajo un datetimepicker1 que selecciono la fecha y ahi el siguiente boton con este codigo

Código Delphi [-]
procedure TForm12.BitBtn2Click(Sender: TObject);
begin
FECHAGUARDIA:=datetimepicker1.DateTime;
query2.close;
query2.sql.text := 'select * from GUARDIAS where GDNI=NIGUARDIA and GFECHAGUARDIA=:FECHAGUARDIA';
query2.Params[0].AsInteger := strtoint(dbtext7.Caption);
query2.Params[1].AsDatetime:= fechaguardia;
query2.open;
if query2.recordcount>0 then
begin
Showmessage('La guardia ya se ha cargado')
end
else
begin
table2.Insert;
table2.FieldByName('GDNI').Value:=strtoint(dbtext7.Caption);
table2.FieldByName('GFECHAGUARDIA').AsDateTime:=trunc(datetimepicker1.Date);
table2.Post;
ShowMessage('La carga se realizo con exito');
   end;
close;

Saludos y gracias de antemano
Responder Con Cita
  #4  
Antiguo 28-06-2012
Avatar de chamix
chamix chamix is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 8
Poder: 0
chamix Va por buen camino
Hola Petolansa, no entiendo muy bien lo que quieres decir, pero ¿estás seguro de que estás buscando la fecha correctamente?
veo que buscas esto:

Cita:
query2.Params[1].AsDatetime:= fechaguardia;
y sin embargo insertas esto

Cita:
table2.FieldByName('GFECHAGUARDIA').AsDateTime:=trunc(datetimepicker1.Date);
¿Has comprobado que estés usando el mismo formato de fecha para insertar y buscar los datos? si no es así, sería lógico que no encuentres el registro que buscas...

Saludos!
Responder Con Cita
  #5  
Antiguo 28-06-2012
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
Gracias Chamix, si es verda, pero respecto a si guardar como date o date time ya habia probrado, ahora manejo el mismo tipo de dato datetime, al igual que la variable. Pero asi y todo, siempre me dice que la carga se ha realizado con el exito, no me toma la busqueda. DOnde puede estar el tema?.

Código Delphi [-]
procedure TForm12.BitBtn2Click(Sender: TObject);
begin
FECHAGUARDIA:=datetimepicker1.DateTime;
query2.close;
query2.sql.text := 'select * from GUARDIAS where GDNI=NIGUARDIA and GFECHAGUARDIA=:FECHAGUARDIA';
query2.Params[0].AsInteger := strtoint(dbtext7.Caption);
query2.Params[1].AsDatetime:= fechaguardia;
query2.open;
if query2.recordcount>0 then
begin
Showmessage('La guardia ya se ha cargado')
end
else
begin
table2.Insert;
table2.FieldByName('GDNI').Value:=strtoint(dbtext7.Caption);
table2.FieldByName('GFECHAGUARDIA').AsDateTime:=trunc(datetimepicker1.DateTime);
table2.Post;
ShowMessage('La carga se realizo con exito');
   end;
close;

Gracias gente. Saludos
Responder Con Cita
  #6  
Antiguo 28-06-2012
Avatar de chamix
chamix chamix is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 8
Poder: 0
chamix Va por buen camino
Yo sigo pensando que el error está ahí...

Has mirado en la BD que formato tiene la fecha? comprueba que guardes y busques solo fechas, si estás buscando Horas, minutos y segundos también, es posible que al crear el registro le estés dando la hora exacta actual al campo GFECHAGUARDIA y al buscarla le des otra hora o ninguna. Me explico?
Yo me aseguraría de que estoy insertando y buscando "SOLO LAS FECHAS", porque solo hay dos parámetros en el query (DNI y FECHA) y dudo que el fallo esté en el DNI.

Espero que te ayude...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Invalid Use of Keyword en SQL GonzaloDias Varios 3 08-03-2012 19:32:04
Invalid use of keyword. Token 'any' Descendents Conexión con bases de datos 6 27-09-2010 20:35:01
invalid use of keyword token:= gonza_619 SQL 8 26-09-2010 00:39:44
Error: Invalid use of keyword gusanita Varios 3 02-02-2006 02:47:15
Invalid use of keyword trabuc SQL 23 05-10-2004 16:56:55


La franja horaria es GMT +2. Ahora son las 20:58:04.


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
Copyright 1996-2007 Club Delphi