Hola,
Código Delphi
[-]DataModulo.QBuscar.Active:=false;
DataModulo.QBuscar.SQL.Clear;
DataModulo.QBuscar.SQL.Text:='select * from periodo
where periodo=er';
DataModulo.QBuscar.Parameters.ParamByName('per').Value:=perio.text;
DataModulo.QBuscar.Active:=true;
DataModulo.QBuscar.ExecSQL;
Aquí hay un problema, y es que usas el Active := True y luego el ExecSQL. Eso se ha tratado muchas veces en este foro y es un error muy común. Usar la propiedad Active o llamar al método Open, sólo debe usarse (como en este caso) en las SELECT; para todo lo demás (INSERT, UPDATE, DELETE, CREATE, .etc) debes usar el ExecSQL, pero nunca los dos juntos, de lo contrario siempre te dará problemas.
El otro punto que veo, que puede dar problemas es que no limpias los parámetros entre una consulta y otra.
Código Delphi
[-]
DataModulo.QBuscar.Active:=false;
DataModulo.QBuscar.SQL.Clear;
DataModulo.QBuscar.SQL.Text:='select * from ciclo
where ciclo=:cic';
DataModulo.QBuscar.Parameters.Clear;
DataModulo.QBuscar.Parameters.ParamByName('cic').Value:=ciclob;
DataModulo.QBuscar.Active:=true;
DataModulo.QBuscar.Active:=false;
DataModulo.QBuscar.SQL.Clear;
DataModulo.QBuscar.SQL.Text:='select * from periodo
where periodo=er';
DataModulo.QBuscar.Parameters.Clear;
DataModulo.QBuscar.Parameters.ParamByName('per').Value:=perio.text;
DataModulo.QBuscar.Active:=true;
Respecto a tú segundo problema, el de la lentitud, comentas que los forms tardan un minuto en arrancar, sería bueno que pusieras el código de los eventos de llamada a esos forms, así como los eventos Create, Activate y/o show para ver porque tarda.
Saludos