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