Clone de um IB_Query. Como q eu faco isso?

26/08/2004

1

Ae,

To precisando do seguinte.
Tenho uma query em um form, e todos os outros forms da aplicacao usam essa query.
O problema eh q a minha aplicacao eh MDI, e quando abro mais de um form numa unica vez, qq scroll que eu der em um DataSource (ds.DataSet.next, por exemplo) ele vai mexer em tds os forms abertos.

E EU NÃO QUERO COLOCAR A MSMA QUERY EM KDA FORM!!!
pq senaum a manutencao fica impossivel.

Minha primeira ideia pra se fazer isso foi o seguinte:
Crio uma variavel do tipo TIB_Query.
Digo que essa variaval vai ser IDENTICA à query q eu uso.
Digo que o dataset dos meus datasources vai ser essa query.

Ateh ai td bem.

Mas... como eu faco isso? Jah tentei de varias maneiras.
(assimindo q a variavel chama-se q)

q := IB_Query1.Create(Self);
---
q := TIB_Query.Create(IB_Query1;
---
q := IB_Query1;
---

Mas de todas essas formas, da no mesmo problema... eu do scroll em uma tela, e altera todas.

Eu quero apenas clonar... soh isso.. essa variavel vai ser apenas igual ao IB_Query1... e naum a propria IB_Query1!!!


Valeuzz!


Responder

Posts

26/08/2004

Thomaz_prg

Bom, primeiro crie uma variavel do tipo TIBQuery.

Supondo que form1 seja o form principal onde está a sua ibquery principal e q uma variavel criada com o tipo citado acima.
Então, no OnShow do Form (Não do principal), coloque :

q:=TIBQuery.Create(self);
q.DataBase := Form1.IBquery1.DataBase;
  q.Transaction := form1.IBQuery1.Transaction;
  with q do begin
    Close;
    SQL.Text := form1.IBQuery1.SQL.Text;
    Open;
  end;
  DataSource1.DataSet := q;


Bom, e no OnClose, faça:

  DataSource1.DataSet := NIL;
  q2.Free;


Espero que lhe ajude.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira