Ver Mensaje Individual
  #2  
Antiguo 17-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 30
jachguate Va por buen camino
Hola.

Creo que tenes un problema de concepto. Las variables "objeto" en delphi no son mas que apuntadores, con una sintaxis simplificada. De esta cuenta, que en tu procedimiento DevuelveClienteOpcional, al hacer

Result := QsqlSistema;

Lo que estas haciendo realmente es devolver una referencia a QsqlSistema, y por tanto, al asignar esta referencia a QsqlClienteOpcional y luego destruir el objeto, en realidad estas destruyendo QsqlSistema, puesto que ambos apuntan al mismo objeto.

Si lo que queres es tener un objeto totalmente independiente, has de crearlo dentro del primer procedimiento, que debiera quedar algo como:

Código Delphi [-]
function TSistema.DevuelveClienteOpcional(pCita: String): TAdoQuery;
begin
  result := TAdoQuery.Create;  // es probable que necesite parámetros... ver ayuda
  // hacé aqui las asignaciones del database y lo que haga falta con un adoQuery.
  with result do
  begin
    Close;
    // esto no se si es realmente necesario... 
    //¿el adoquery no agrega automáticamente los parámetros?
    Parameters.Clear;
    Parameters.AddParameter.Name:='Cita';
    Parameters.ParamByName('Cita').Value:=pCita;
    SQL.Text:= 'Select * from CitaOpcional'+
               ' Where IdCita= :Cita';
    ParamCheck:= True;    
    Open;
  end;
end;

La otra rutina no necesitaría, en este caso, ningún cambio.

No uso ado, asi que he dejado simplemente algunos comentarios que supongo vos sabras interpretar y sustituir por el código apropiado.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita