Cita:
Empezado por ZeroHot
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