Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2010
kasper kasper is offline
Miembro
 
Registrado: feb 2008
Posts: 20
Poder: 0
kasper Va por buen camino
Copiar TADOQuery a TDataSource

Buenas tardes,
estoy intentando copiar un ADOQuery a un DataSource para después poder liberar el AdoQuery sin perder el contenido en el datasource pero no sé como hacerlo. Si hago lo siguiente
Código:
DataSource.DataSet:=ADOQuery1;
se copia correctamente, pero cuando después hago:
Código:
FreeAndNil(ADOQuery1);
DataSource.DateSet se queda vacio...

¿Alguien sabe como se puede hacer esto?
Muchas gracias
Responder Con Cita
  #2  
Antiguo 24-02-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Según entiendo, un DataSource es como un puente para que tu sistema (supongamos un Grid) se pueda comunicar con tu consulta (ADOQuery).

Es decir: Grid -> DataSource -> Query

Obviamente, si quitas el Query, el puente ya no tiene destino por lo que el grid no puede mostrar nada...

Vamos, que toda tu información no es que se "copie" en el datasource, tu información sigue estando en el Query.
__________________

Responder Con Cita
  #3  
Antiguo 24-02-2010
kasper kasper is offline
Miembro
 
Registrado: feb 2008
Posts: 20
Poder: 0
kasper Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Según entiendo, un DataSource es como un puente para que tu sistema (supongamos un Grid) se pueda comunicar con tu consulta (ADOQuery).

Es decir: Grid -> DataSource -> Query

Obviamente, si quitas el Query, el puente ya no tiene destino por lo que el grid no puede mostrar nada...

Vamos, que toda tu información no es que se "copie" en el datasource, tu información sigue estando en el Query.
Sí, realmente es así!!! por lo que según entiendo de tu respuesta que no se podrá liberar el Query, no?
Ok, Muchas gracias por tu respuesta!!!
saludos
Responder Con Cita
  #4  
Antiguo 24-02-2010
ZeroHot ZeroHot is offline
Registrado
 
Registrado: nov 2009
Ubicación: Santo Domingo R.D.
Posts: 6
Poder: 0
ZeroHot Va por buen camino
Estoy de acuerdo con nuestro compañero ContraVeneno tu DataSource reprecenta tu fuente de tus datos entonces cuando le escribes la sentencia

Código Delphi [-]
DataSource.DataSet:=ADOQuery1;

en español estas diciendo mi fuente de datos es igual a lo mismo que he consultado con el ADOQuery1, es por eso que cuando cuando liberas tu ADOQuery1 tu fuente se que da vacia y no muestra nada...

Te recomiendo que mejor nos expliques para que situacion quieres usar eso, es decir en realidad que es lo que quieres lograr cual seria la funcionabilidad y tal ves resulte otra forma de hacerlo mucho mas comoda...

Saludos desde R.D
Responder Con Cita
  #5  
Antiguo 24-02-2010
kasper kasper is offline
Miembro
 
Registrado: feb 2008
Posts: 20
Poder: 0
kasper Va por buen camino
Cita:
Empezado por ZeroHot Ver Mensaje
Estoy de acuerdo con nuestro compañero ContraVeneno tu DataSource reprecenta tu fuente de tus datos entonces cuando le escribes la sentencia

Código Delphi [-]DataSource.DataSet:=ADOQuery1;


en español estas diciendo mi fuente de datos es igual a lo mismo que he consultado con el ADOQuery1, es por eso que cuando cuando liberas tu ADOQuery1 tu fuente se que da vacia y no muestra nada...

Te recomiendo que mejor nos expliques para que situacion quieres usar eso, es decir en realidad que es lo que quieres lograr cual seria la funcionabilidad y tal ves resulte otra forma de hacerlo mucho mas comoda...

Saludos desde R.D
Muchas gracias por tu aportación ZeroHot. Como dices voy a explicar el motivo por el cual quiero hacer esto y si alguien conoce una forma más elegante de hacerlo, lo agradeceré!
Tengo un formulario general y otro donde realizo las consultas a SQLServer. Me gustaría tener separado todo lo que refiere a consultas a SQLServer del formulario general, por lo que hago funciones del estilo:

Código:
procedure TForm1.FormCreate(Sender: TObject);
begin
    CargarClientes(DataSourceClientes);
    DBGridClientes.DataSource := DataSourceClientes; //quiero la
//información para mostrarla en un DBGrid
end;
y esta función está definida en el formulario donde se hacen todas las consultas a SQLServer, como por ejemplo:

Código:
procedure CargarClientes(var DataSource: TDataSource);
var
  ADOQueryClientes:TADOQuery;
begin
  Try
    ADOQueryClientes:=TADOQuery.Create(nil);
    //se realiza la conexión de "ADOQueryClientes"
    //consulta que quiero hacer
    ADOQueryClientes.Open;
    DataSource.DataSet:=ADOQueryClientes;
  Finally
    //FreeAndNil(ADOQueryClientes); //está comentado porque si lo
//descomento se pierde la información tal y como hemos estado hablando
  End;
end;
Nota: "DataSourceClientes: TDataSource" es un objeto visual del formulario general.

No se si así queda algo más claro. La solución rápida que se me ha ocurrido sería crear el AdoQuery desde el formulario general y pasárselo a la función para que se modifique en ella.
¿Me proponéis algún método mejor?
Muchas gracias por vuestra ayuda!
Saludos
Responder Con Cita
  #6  
Antiguo 25-02-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿no tienes un módulo de datos (DataModule)?

Ese DataModule te serviría para tener separadas tus consultas de tu formulario principal...

__________________

Responder Con Cita
  #7  
Antiguo 26-02-2010
kasper kasper is offline
Miembro
 
Registrado: feb 2008
Posts: 20
Poder: 0
kasper Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
¿no tienes un módulo de datos (DataModule)?

Ese DataModule te serviría para tener separadas tus consultas de tu formulario principal...


Ok!
No conocía los DataModule así que lo miraré haber que puedo hacer con ellos!
Muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿es necesaria la BDE si usamos TDataSource? coso SQL 5 04-08-2008 15:16:17
TDataSet,TDataSource,TclientDataSet teote Conexión con bases de datos 1 17-07-2008 16:52:31
Recorrer controles enlazados a una TDataSource Juandedian OOP 2 05-02-2008 20:06:10
Como enlazar el TDataSource a un TpFIBQuery ???? AGAG4 Conexión con bases de datos 3 21-10-2006 00:44:20
TDataSource - ¿Para qué existe? roman Debates 6 14-07-2004 19:31:44


La franja horaria es GMT +2. Ahora son las 11:45:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi