Hola AGAG4.
Has intentado hacer una traza paso a paso de este procedimiento. Estoy casi seguro que la excepción se eleva en la línea
result:=Tabla.FieldByName(campo).Value;
Esto es porque, al hacer un
Código SQL
[-]
Select max(campo)
from tabla
En ninguno de los motores que conozco el campo resultante se llamara "campo". Algunos le pondran Max(campo) otros, expr1, y asi. Estando seguro que es el único campo resultante de la consulta, creo que podes sustituir esa línea librememte por:
result := Tabla.Fields[0].Value;
o bien requerir explicitamente que el resultado se llame de la misma forma que el campo que estas sumarizando.
Código SQL
[-]
Select max(campo) as campo
from tabla;
Por último, y esperando que el problema quede resuelto, te recomiendo aprender a usar las etiquetas [code], [delphi], [sql] y [php] que se hallan disponibles en los foros, para publicar trozos de código.
Hasta luego.