No te recomiendo el del Chr(39), mas por una cuestión personal que por otra cosa, tenés que saber que Chr es una función y estas usando una función de System para crear un caracter, el compilador de Delphi es bastante inteligente y comprende que esta función puede ser cambiada por una constante (#39), pero no debemos abusar de las bondades del compilador, creo que es mucho mas prolijo definirlas como constantes (Insisto que es una opinión personal).
De todos modos te recomiendo utilizar la función QuotedStr, porque si el text del Edit1 contiene un #39, QuotedStr las duplica y evita errores.
Probá esto y vas a ver que falla
Código:
Edit1.text := 'Juan D''Arienzo';
Query.Sql.Add('Select * from tabla Where tabla.mes <= '#39 + Edit1.text + #39';')
y/o
Código:
Query.Sql.Add('Select * from tabla Where tabla.mes <= ''' + Edit1.text + ''';')
Solución
Código:
Edit1.text := 'Juan D''Arienzo';
Query.Sql.Add('Select * from tabla Where tabla.mes <= ' + QuotedStr(Edit1.text) + ';')
Para trabajar con diferentes tipos de datos, y que nuestro código sea protable entre diferentes servidores de bases de datos, te recomiendo usar parámetros.