Ver Mensaje Individual
  #2  
Antiguo 23-01-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Reputación: 22
Bicho Va por buen camino
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.ExecSQL;
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;
//DataModulo.QBuscar.ExecSQL;

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
Responder Con Cita