Fórum Definir DataSet do DataSource via código.. #365865

05/11/2008

0

Pessoal,

Como faço para definir em tempo de execução o DataSet a que o DataSource será ligado??? Estou fazendo assim:

with TDataSource.Create(Self) do 
begin 
Name := ´DsPa´+ IntToStr(i); 
Erro aqui -> DataSet := ´QryNomes´; 
end; 

Da o erro:

Incompatible types: ´TDataSet´ and ´String´

Se tiro as aspas ´´ tambem gera erro.


Lincesmarques

Lincesmarques

Responder

Posts

05/11/2008

Lincesmarques

Deixa eu me explicar melhor. É o seguinte, eu crio várias TQuerys com nomes diferentes e para cada TQuery eu crio um TDataSource. Exemplo:

var
  i, registros : Integer;
begin
 SQLQuery1.Open;
 registros := SQLQuery1.RecordCount;
for i := 0 to registros do begin
      with TSQLQuery.Create(Self) do
      begin
        Parent:=Self;
        Name := ´QryPa´+ IntToStr(i);
        SQLConnection := fdm.ConectDados;
        SQL.Add(´SELECT * FROM TBNOMES´);
        Open;
      end;
      with TDataSource.Create(Self) do
      begin
        Parent:=Self;
        Name := ´DsPa´+ IntToStr(i);
        DataSet := ´QryPa´+ IntToStr(i);
      end;
end;


Viu? vamos supor que numa query qualquer eu tenha 10 registros, então o laço for terá que criar 10 TQuerys, com o nome Query1, Query2, Query3, e assim sucessivamente até ter 10 TQuerys, e criar também 10 TDataSource, com o nome DataSource1, DataSource2, DataSource3, e assim sucessivamente até ter 10 TDataSource´s, só que no caso do TDataSource ele tem que se ligar através da propriedade ´DataSet´ ao seu TQuery correspondente que foi criado dinamicamente.


Responder

Gostei + 0

05/11/2008

Emerson Nascimento

tente assim:
var
  i, registros: Integer;
  qry: TQuery;
begin
  SQLQuery1.Open;
  registros := SQLQuery1.RecordCount;
  for i := 0 to registros do
  begin
    qry := TSQLQuery.Create(Self);
    with qry do
    begin
      Parent := Self;
      Name := ´QryPa´+ IntToStr(i);
      SQLConnection := fdm.ConectDados;
      SQL.Add(´SELECT * FROM TBNOMES´);
      Open;
    end;
    with TDataSource.Create(Self) do
    begin
      Parent := Self;
      Name := ´DsPa´+ IntToStr(i);
      DataSet := qry;
    end;
  end;


ou assim:
var
  i, registros: Integer;
  qry: TQuery;
begin
  SQLQuery1.Open;
  registros := SQLQuery1.RecordCount;
  for i := 0 to registros do
  begin
    with TSQLQuery.Create(Self) do
    begin
      Parent := Self;
      Name := ´QryPa´+ IntToStr(i);
      SQLConnection := fdm.ConectDados;
      SQL.Add(´SELECT * FROM TBNOMES´);
      Open;
    end;
    with TDataSource.Create(Self) do
    begin
      Parent := Self;
      Name := ´DsPa´+ IntToStr(i);
      DataSet := TDataset(Self.FindComponent(´QryPa´+ IntToStr(i)));
    end;
  end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar