copiar tquery.fieldlist para outra tquery.fieldlist?

16/05/2008

0

Como faço para copiar de uma tquery.fieldlist para outra tquery.fieldlist?


Xtreme

Xtreme

Responder

Posts

16/05/2008

Emerson Nascimento

creio que com assing seja possível.

query1.fieldlist.assign(query2.fieldlist);

tente aí...


Responder

16/05/2008

Xtreme

creio que com assing seja possível. query1.fieldlist.assign(query2.fieldlist); tente aí...


Pois é tentei mas nao funciona, ´property read-only´


Responder

17/05/2008

Emerson Nascimento

tente assim:

query2.fielddefs.clear;
for i := 0 to query1.FieldDefs.Count-1 do
  query2.FieldDefs.Add(
    query1.Fields[i].FieldName,
    query1.Fields[i].DataType,
    query1.Fields[i].Size,
    query1.Fields[i].Required
  );



Responder

19/05/2008

Xtreme

Pois então fiz isso, deu certo, mas acabei percebendo que nao é exatamente isso que eu queria, na real o que quero é copiar os fields de uma query para outra, copiar o displaylabel, displayformat, etc. até tentei da seguinte maneira

   query1.Fields.Clear;
   for x := 0 to query2.FieldCount -1 do
   begin
      query1.Fields.Add(query2.Fields[x]);
   end;


mas ai o que acontece é que, quando executo a query1, no dbgrid até sao listados os registros mas os dados nao aparecem, aparecem as linhas no dbgrid mas nada escrito nelas!


Responder

19/05/2008

Emerson Nascimento

e assim?
begin
  query2.fielddefs.clear;
  for i := 0 to query1.FieldDefs.Count-1 do
  begin
    query2.FieldDefs.Add(
      query1.Fields[i].FieldName,
      query1.Fields[i].DataType,
      query1.Fields[i].Size,
      query1.Fields[i].Required
    );
    query2.Fields[i].DisplayLabel := query1.Fields[i].DisplayLabel;
    query2.Fields[i].EditMask := query1.Fields[i].EditMask;

    if query2.Fields[i].DataType in [ftSmallint, ftInteger, ftFloat] then
    begin
      TFloatField(query2.Fields[i]).EditFormat := TFloatField(query1.Fields[i]).EditFormat;
      TFloatField(query2.Fields[i]).DisplayFormat := TFloatField(query1.Fields[i]).DisplayFormat
    end;
  end;
end;



Responder

21/05/2008

Xtreme

e assim?
begin
  query2.fielddefs.clear;
  for i := 0 to query1.FieldDefs.Count-1 do
  begin
    query2.FieldDefs.Add(
      query1.Fields[i].FieldName,
      query1.Fields[i].DataType,
      query1.Fields[i].Size,
      query1.Fields[i].Required
    );
    query2.Fields[i].DisplayLabel := query1.Fields[i].DisplayLabel;
    query2.Fields[i].EditMask := query1.Fields[i].EditMask;

    if query2.Fields[i].DataType in [ftSmallint, ftInteger, ftFloat] then
    begin
      TFloatField(query2.Fields[i]).EditFormat := TFloatField(query1.Fields[i]).EditFormat;
      TFloatField(query2.Fields[i]).DisplayFormat := TFloatField(query1.Fields[i]).DisplayFormat
    end;
  end;
end;


Cara valeu pela ajuda, valeu mesmo, não usei exatamente o que vc passou, mas me deu a luz que precisava! T+


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar