Array
(
)

Pegar valor de um field cujo não esteja na lista dos fields

Marcos Fernando
   - 08 dez 2005

galera eu tenho uma tabela com dois fields
select indice, nome from funcionario

mais vai existir uns casos que eu irei precisar usar mais dois ou tres fields mais eu não quero adicionar eles na tabela, pois eu uso em muitos outros lugares ai vai pesar na performace.


Como faço pra capturar o valor desses novos fields?


Eniorm
   - 09 dez 2005

acho que não é possível, pois seu select gera apenas 2 fields, mesmo que a tabela possui outros.... o lance vai ser vc acrescentar os fields no select para poder usar.


Bruno Belchior
   - 09 dez 2005

Acho q a questão do colega não é adicionar no SQL, ele adicionou mas não consegue acessá-los porque não os tornou perssistentes no DataSet... Acho q tem duas opções:
[list:563e638818][*:563e638818]Não coloca nenhum TField na perssistênca e acessa tudo via FieldByName ou equivalente;
[*:563e638818]Receba isso em outro DataSet;[/list:u:563e638818]


Adriano Santos
   - 09 dez 2005


Citação:
Acho q a questão do colega não é adicionar no SQL, ele adicionou mas não consegue acessá-los porque não os tornou perssistentes no DataSet... Acho q tem duas opções:
[list:a52b3b7fed][*:a52b3b7fed]Não coloca nenhum TField na perssistênca e acessa tudo via FieldByName ou equivalente;
[*:a52b3b7fed]Receba isso em outro DataSet;[/list:u:a52b3b7fed]


Concordo com a primeira opção que o Bruno passou. Há anos não uso os campos declarados no DataSet, só acesso via FieldByName.


Bruno Belchior
   - 09 dez 2005

Eu uso eles, acho q da maneira mais correta de OO não aconselharia isso, mas vendo do lado RAD eles são utéis...


Jairroberto
   - 09 dez 2005

Olá, pessoal!

A discussão tá boa, mas vamos por partes:

Como o problema alegado pelo Marcos é a redução de performance pela adição dos três campos a mais que ele precisa de vez em quando, a menos que ele tenha se expressado mal, o problema é mesmo na cláusula SQL. Neste caso não tem jeito, terá que adicioná-los no select, mesmo que torne isso dinâmico, criando uma rotina para alterar o select quando necessário ou utilizando outro Query para fazer esse outro select também só quando necessário.

Sobre os campos persistentes (TField), depende muito de cada caso. Se o conteúdo do dataset é fixo vale a pena usar campos persistentes, principalmente se eles fazem parte da camada de regras de negócios e são alteráveis. Neste caso as suas propriedades e seus métodos relacionados a validação e exibição das informações são muito úteis e tornam o código muito mais ´limpo´. Se você usa DBX então... não dá para viver sem os TFields, pois é necessário incluí-los no TSQLDataSet para definir suas propriedades ´ProviderFlags´. Sem isso não é possível usar o ´UpdateMode´ ´upWhereKeyOnly´ do TDataSetProvider, e sem essa opção criam-se limitações drásticas na atualização de dados via DBX.


Um abraço,
Jair


Marcos Fernando
   - 09 dez 2005

Descupa galera se não postei de forma clara

o problema não é o Select
#Código

select indice, nome from funcionario
pois dependendo eu o mudo assim:
#Código
select indice, nome, cidade, fone, Etc... from funcionario


o o duro é que esses novos fields não são perssistentes e preciso dos valores deles e como eu uso (INDICE e NOME) de forma perssistentes os novos ficam de fora

Mais realmente eu precisaria usar o mesmo componente Ibquery pois existe muita programação envolvendo esse componente..


Thanks


Bruno Belchior
   - 09 dez 2005

então a resposta é não usar nenhum campo persistente, fazendo tudo via FieldByName...