Suponte que validancontrol tiene el texto HU74832. Si examinas la sentencia SQL verás que queda así:
Código SQL
[-]
Select ALU_NOM, ALU_SEM, ALU_ESP
From ":BDBECAS_BAJDEF: DATPERAL"
Where ALU_CTRL = HU74832
Lo cual es incorrecto por que faltan las comillas alrededor de HU74832. QuotedStr te pone esas comillas. Podrías hacerlo tú misma:
Código Delphi
[-]
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = "' + validancontrol.Text + '"');
pero termina siendo bastante ilegible tantas comillas. De hecho, lo mejor siempre que uses consultas donde el valor de un campo varíe, es usar parámetros:
Código Delphi
[-]
DataModuleBD.Query.SQL.Clear;
DataModuleBD.Query.SQL.Add('Select ALU_NOM, ALU_SEM, ALU_ESP');
DataModuleBD.Query.SQL.Add('From ":BDBECAS_BAJDEF: DATPERAL"');
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = :ctrl');
DataModuleBD.Query.SQL.Add(';');
DataModuleBD.Query.Open;
y sustituir el parámetro al momento de ejecutar la consulta:
Código Delphi
[-]
DataModuleBD.Query.ParamByName('ctrl').AsString := validancontrol.Text;
Al usar AsString, ya le estás indicando que el parámetro es texto y se agregarán las comillas automáticamente. El uso de parámetros te deja un código mucho más prolijo y manejable.
// Saludos