Vamos a ver... primero abres la consulta y luego la cambias....

frm_DataModule.qry_Selec_Materia.Open;
después de que la cambias, no la vuelves a abrir....
Y luego mandas llamar a la instrucción ".Text" pero no va dentro de ningún mensaje...

frm_DataModule.qry_Selec_Materia.SQL.Text;
y luego la cierras...

frm_DataModule.qry_Selec_Materia.Close;
Yo recomendaría:
Código Delphi
[-]
with frm_DataModule.qry_Selec_Materia do begin
if active then close;
SQL.Clear;
SQL.Add('SELECT ID_MATERIA, NOMBRE FROM MATERIA');
SQL.Add('WHERE (MATERIA.CLAVE_AA = '+VarToStr(frm_CapAlum1.combo_Nucleo.KeyValue));
SQL.Add('OR MATERIA.NUCLEO_FORMACION ='+QuotedStr('TRONCO COMUN')+') ');
Open;
First;
while not (Eof) do begin
....
Next;
end; end;