Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Invalid Use of Keyword en SQL (https://www.clubdelphi.com/foros/showthread.php?t=77953)

GonzaloDias 08-03-2012 17:18:34

Invalid Use of Keyword en SQL
 
Hola a todos,
Tengo un problema con un Insert realizado sobre un Query

Código Delphi [-]
  Form2.Query5.Close;
  Form2.Query5.SQL.Clear;
  form2.Query5.SQL.Text:='Insert Into ProfesorCurso (Profesor,Curso,Fecha,Index,EstadoInscripcion) Values(:Profesor, :Curso, :Fecha, :Index, :Estado)';
  form2.Query5.ParamByName('Profesor').asinteger:=strtoint(form6.DBEdit1.Text);
  form2.Query5.ParamByName('Curso').asinteger:=form2.Table4.FieldByName('Curso_ID').AsInteger;
  form2.Query5.ParamByName('Fecha').asdatetime:=Date;
  form2.Query5.ParamByName('Index').asinteger:=1;
  form2.Query5.ParamByName('Estado').asstring:='Activo';
  Form2.Query5.ExecSQL;

El error me lo muestra en estos deos campos "Index,EstadoInscripcion" pero ambos estan bien ordenados y escritos, antes aparece el campo fecha, la cual le asigno Date de actual fecha, pero sigue con el mismo error, los demas de la sentencia parece estar ok, necesitaria saber si es un problema de DB en paradox o si tienen alguna solucion que no pueda ver.
Gracias a todos

Casimiro Notevi 08-03-2012 17:25:41

No estaría mal que dijeras el error ;)

GonzaloDias 08-03-2012 18:01:45

en si el error seria:

"Invalid use of keyword. Token: Index, EstadoInscripcion)
LineNumber:1

ecfisa 08-03-2012 19:32:04

Hola Gonzalo.

El problema está en el nombre de campo Index, reemplazalo en la tabla con el Database Desktop por Indice (por ejemplo) y funcionará sin inconveniente.

No puedo explicar el motivo de esto por que no trabajo con BDE, pero aparentemente Index sería un nombre reservado o algo así... :confused:

Esta fué mi prueba final e inserta correctamente:
Código Delphi [-]
  with Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Insert Into ProfesorCurso(Profesor, Curso, Fecha, Indice, EstadoInscripcion) ');
    SQL.Add('Values(:Profesor, :Curso, :Fecha, :Indice, :Estado)');
    ParamByName('Profesor').AsInteger:= DBEdit1.Field.AsInteger;
    ParamByName('Curso').AsInteger:= Table1.FieldByName('EmpNo').AsInteger;
    ParamByName('Fecha').AsDateTime:= Date;
    ParamByName('Indice').AsInteger:= 1;
    ParamByName('Estado').AsString:= 'Activo';
    ExecSQL;
  end;


Saludos.


La franja horaria es GMT +2. Ahora son las 20:33:53.

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