Array
(
)

Fields Editor em tempo de execução

Paulo
   - 16 dez 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:

Citação:
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?


Adriano Santos
   - 16 dez 2005


Citação:
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:

Citação:
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,

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

#Código


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.


Paulo
   - 19 dez 2005

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.


Adriano Santos
   - 19 dez 2005


Citação:
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.