Ver Mensaje Individual
  #1  
Antiguo 26-09-2008
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Reputación: 0
Softweb Va por buen camino
ERROR incomprensible de SQL en Delphi 2006

Hola a todos:
Soy programador desde hace 18 años y con el Delphi desde la versión 1.

Y al pasar al Delphi 2006 me sale un error en una función que tengo desde hace años funcionando perfectamente.

La función la utilizo para obtener un indice incrementa cada vez que añado un registro por ejemplo:

Código:
TableGestionIDOrig.AsInteger := DM.GenerarId('IDOrig','GESTION', 'Anyo = '+IntToStr(SwGetAnyo)+' AND HostalId = '+IntToStr(V_TIENDA));
Y la funcion es esta:

Código:
function TDM.GenerarId(KeyField, TableName, Condicion: string): Integer;
var
  NewValue: Integer;
begin
  NewValue := -1;
  Query1.Close;
  Query1.SQL.Clear;
  if Condicion <> '' then
    Query1.SQL.Add('SELECT Max( '+KeyField+' ) AS MAXIMO FROM '+TableName+ ' WHERE '+Condicion)
  else
    Query1.SQL.Add('SELECT Max('+KeyField+') AS MAXIMO FROM '+TableName);
  Query1.Open;
  // Si no hay registros en la tabla la consulta devuelve null
  if VarIsNull( Query1.FieldValues[ 'MAXIMO' ] ) then
    NewValue := 1 // valor para el primer registro de la tabla
  else
    NewValue := Integer( Query1.FieldValues[ 'MAXIMO' ] ) + 1;
  Query1.Close;
  Result := NewValue;
end;
Bueno pues lo sorprendente es que despues de tantos años funcionando la funcion ahora me dice el Delphi que :

Cita:
ERROR Invalid use of Keyword.
Token:=
Line Number:.1
el caso es que la sentencia que genera que es esta:
Código SQL [-]SELECT Max( IDOrig ) AS MAXIMO FROM Gestion WHERE Anyo=2008 AND HostalID=1

Funciona perfectamente si la meto en programas de SQL que se que estan echos con Delphi.

Y la gracia me tiene mirando y remirando la centencia desde hace mas de un mes.

Por favor si alguien tiene alguna idea de por donde mirar se lo agradeceria.

Muchas gracias
Responder Con Cita