Fields Editor em tempo de execução

16/12/2005

Sempre que preciso fazer alguma coisa com com os campos da tabela, eu necessito adicionar os campos no Fields Editor da Table ou Query, para poder trabalhar, senão dá erro de compilação, tipo, Undeclared Identifier e etc... Porem há a necessidade, às vezes, de preecher a query e os campo em runtime, assim:
digamos que eu necessite, passar os campos de uma tabel para outra, então faria:
while not tb1.eof do begin tb2nome.AsString:=tb1descricao.AsString; tb2.post; tb1.next; end;

Se os campos nome e descricao, das referidas tabelas, não estiverem adicionados no Fields editor da table em questão, dará erro de compile e não executará. Porem se eu preencho o Fields Editor da table ou query, e em runtime, quiser fazer esse transporte com outras tabelas, dará erro, pois o Fields Editor terá outros valores diferentes dos que estão lá. Então pergunto: Como fazer tudo isso em runtime, me dando o poder de trabalhar com as tabelas qu eu quiser? Até mesmo criar tabelas em Runtime e executar a instrução?


Paulo

Respostas

16/12/2005

Adriano Santos

Sempre que preciso fazer alguma coisa com com os campos da tabela, eu necessito adicionar os campos no Fields Editor da Table ou Query, para poder trabalhar, senão dá erro de compilação, tipo, Undeclared Identifier e etc... Porem há a necessidade, às vezes, de preecher a query e os campo em runtime, assim: digamos que eu necessite, passar os campos de uma tabel para outra, então faria: [quote:7d85c3b349]while not tb1.eof do begin tb2nome.AsString:=tb1descricao.AsString; tb2.post; tb1.next; end;

Se os campos nome e descricao, das referidas tabelas, não estiverem adicionados no Fields editor da table em questão, dará erro de compile e não executará. Porem se eu preencho o Fields Editor da table ou query, e em runtime, quiser fazer esse transporte com outras tabelas, dará erro, pois o Fields Editor terá outros valores diferentes dos que estão lá. Então pergunto: Como fazer tudo isso em runtime, me dando o poder de trabalhar com as tabelas qu eu quiser? Até mesmo criar tabelas em Runtime e executar a instrução?[/quote:7d85c3b349]

[b:7d85c3b349]Paulo[/b:7d85c3b349],

Eu não costumo trabalhar com campos desta forma, somente quando sou forçado (empresa trabalha assim por exemplo). Prefiro o uso o FieldByName.

while not tb1.eof do 
begin
  tb2.FieldByName(´nome´).AsString := tb1.FieldByName(´descricao´).AsString;
  tb2.post;
  tb1.next;
end;
end;


Assim não há a necessidade de se tê-los no fields editor. Há alguma implicação em você trabalhar desta forma?

Se a resposta for sim, existem formas de tratar isso ´manualmente´, inserindo e limpando o fields editor, mesmo assim não terá como programar da forma como descreveu, ou seja, usando o nome da Query/Table seguido do nome do campo.


Responder Citar

19/12/2005

Paulo

Não Adriano, não há não, até me esqueço deste método de trabalhar. Vou forçar a barra para trabalhar assim, com FieldByName, pois realmente é melhor, e posso trabalhar do jeito que eu quero. Obrigado mesmo.


Responder Citar

19/12/2005

Adriano Santos

Não Adriano, não há não, até me esqueço deste método de trabalhar. Vou forçar a barra para trabalhar assim, com FieldByName, pois realmente é melhor, e posso trabalhar do jeito que eu quero. Obrigado mesmo.


Beleza Paulo, se precisar de algo ai é só dar um toque.


Responder Citar