FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Envio de Resultado de un AdoQuery
Hola a todos, quisiera que por favor me ayuden a mejorar este código, el problema que tengo es que al destuir (QsqlClienteOpcional) aparentemente tambien se destruye (QsqlSistema) y ya no me deja usar ningún metodo de la clase TSistema. La Clase TSistema es una especie de Clase Servidora. Tambien, no se si esta bien la forma como mando la información del query(QsqlSitema) al formulario o hay otra mejor forma de hacerlo, que la verdad lo hice de pura intuición, Espero me puedan dar sugerencias, para mejorar mi código.
Base de datos: Sql 2000 Delphi 6.0 Este es el Código del metodo que utilizo para traer la informacion de la base de datos Código:
function TSistema.DevuelveClienteOpcional(pCita: String): TAdoQuery; begin with QsqlSistema do begin Close; Parameters.Clear; Parameters.AddParameter.Name:='Cita'; Parameters.ParamByName('Cita').Value:=pCita; SQL.Text:= 'Select * from CitaOpcional'+ ' Where IdCita= :Cita'; ParamCheck:= True; Open; Result:= QsqlSistema; end; end; Código:
procedure TFrmCita.MuestraClienteOpcional; var QsqlClienteOpcional: TADOQuery; begin QsqlClienteOpcional:= TADOQuery.Create(Owner); QsqlClienteOpcional.Connection:= AdocCita; QsqlClienteOpcional:= Sistema.DevuelveClienteOpcional(FCita); with QsqlClienteOpcional do begin EdtOpcApPaterno.Text:= FieldByName('ApellidoPaterno').AsString; EdtOpcNombres.Text:=FieldByName('NombreCliente').AsString; EdtOpcTFijo.Text:=FieldByName('TelefonoFijoCo').AsString; EdtOpcTCelular.Text:=FieldByName('TelefonoCelularCO').AsString; EdtOpcHora.Text:=FieldByName('HoraReserva').AsString; Destroy; end; end; |
#2
|
||||
|
||||
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:
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 |
#3
|
|||
|
|||
Ok . Jose antonio, ahora entiendo, hay alguna otra forma de mandar la informacion del AdoQuery QsqlSistema a mi formulario sin tener que crear otro AdoQuery en este..
Gracias , por tu respuesta , me aclaró mas el panorama |
#4
|
||||
|
||||
Hola.
En primer lugar aclaro que me llamo Juan Antonio. Luego, ¿que significa "mandar la informacion"?
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
|||
|
|||
Perdon por la demora , me referia a otra forma de enviar la informacion de la clase TSistena a el formularioGracias.
|
#6
|
||||
|
||||
Lo siento, pero desde mi posición "enviar la información", significa lo mismo que "mandar la información"... y esto es: muchas cosas posibles y nada concreto.
Cómo no está claro, asumiré que queres copiar los datos de los registros del query1 al query2, lo que podes hacer con un ciclo algo asi:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|