Pegar valor de um field cujo não esteja na lista dos fields
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?
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?
Marcos Fernando
Curtidas 0
Respostas
Eniorm
08/12/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.
GOSTEI 0
Bruno Belchior
08/12/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]
[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]
GOSTEI 0
Adriano Santos
08/12/2005
[quote:a52b3b7fed=´Bruno Belchior´]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][/quote:a52b3b7fed]
Concordo com a primeira opção que o [b:a52b3b7fed]Bruno[/b:a52b3b7fed] passou. Há anos não uso os campos declarados no DataSet, só acesso via FieldByName.
[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][/quote:a52b3b7fed]
Concordo com a primeira opção que o [b:a52b3b7fed]Bruno[/b:a52b3b7fed] passou. Há anos não uso os campos declarados no DataSet, só acesso via FieldByName.
GOSTEI 0
Bruno Belchior
08/12/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...
GOSTEI 0
Jairroberto
08/12/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
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
GOSTEI 0
Marcos Fernando
08/12/2005
Descupa galera se não postei de forma clara
o problema não é o Select
pois dependendo eu o mudo assim:
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
o problema não é o Select
select indice, nome from funcionario
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
GOSTEI 0
Bruno Belchior
08/12/2005
então a resposta é não usar nenhum campo persistente, fazendo tudo via FieldByName...
GOSTEI 0