Valeu :P
Consegui aqui, com o tempo vou pegando o jeito aqui
On 31 jan, 09:04, Marco Catunda <[email protected]> wrote:
> Rafael,
>
> .'.
> Coloque um breakpoint na linha 216 e veja como está a estrutura da variavel
> item.
>
> O que o erro está informando é uma tentativa de acesso a uma propriedade
> não definida.
>
> return item['tipo_reuniao']['tr_nome'];
>
> TypeError: Error #1010: A term is undefined and has no properties.
> at br.com.cauirs.maconaria.view.screen::CadastroReuniao/getTipoReuniao
>
> Ou não existe a propriedade 'tipo_reuniao' ou 'tr_nome'. Veja pelo
> debug como está
> a estrutura do objeto item.
>
> TFA
> --
> Marco Catunda
>
> 2009/1/29 RafaelViana <[email protected]>:
>
>
>
>
>
> > Não consegui aqui :/
>
> > a coluna no data grid ta assim:
>
> > <mx:DataGridColumn headerText="Tipo" dataField="tipoReuniao"
> > width="150"
> >
> > labelFunction="getTipoReuniao"/>
>
> > label function:
>
> > public function getTipoReuniao(item:Object,
> > column:DataGridColumn):String{
> > return item['tipo_reuniao']['tr_nome'];
> > }
>
> > A pesquisa está assim:
>
> > @SuppressWarnings("unchecked")
> > public List<Reuniao> find(Date dataInicial, Date dataFinal,
> > TipoReuniao tipo)
> > throws Exception {
> > return getHibernateTemplate().find("from Reuniao r INNER JOIN
> > r.tipoReuniao tr " +
> > "WHERE tr.tr_codigo = ? AND r.reun_data
> > BETWEEN ? AND ? ORDER BY
> > reun_data ASC",
> > new Object[] {tipo.getTr_codigo(),
> > dataInicial, dataFinal});
> > }
>
> > Ela está funcionando PERFEITAMENTE, pois, quando debugo ele me
> > preenche o array listReuniao com os dados certos.So a única diferença
> > que percebi é a seguinte.EX:
>
> > A pesquisa no banco retorna 5 resultados
>
> > Consulta sem Inner Join:
> > *Dentro do Array 5 objetos Reuniao (utilizo apenas o dateField no
> > Datagrid ele apresenta corretamente)
> > *Para preencher os campos da tabela Reuniao no datagrid só preenchia
> > com o nome do campo. Ex: reun_data
> > *Para preencher o nome do tipo da reunião, usava uma labelFunction.
> > Ex: return tipoReuniao.tr_nome;
>
> > Consulta com Inner Join:
> > Dentro do Array tem 5 Arrays cada array tem 2 objetos um objeto
> > Reuniao e um objeto TipoReuniao
> > *Não sei como preencher nem os campos da tabela Reuniao nem os campos
> > da tabela TipoReuniao
>
> > Quando faço a pesquisa com inner join me retorna esse erro:
>
> > TypeError: Error #1010: A term is undefined and has no properties.
> > at
> > br.com.cauirs.maconaria.view.screen::CadastroReuniao/getTipoReuniao
> > ()[F:\Projetos\SisMaconaria\src_flex\br\com\cauirs\maconaria\view
> > \screen\CadastroReuniao.mxml:216]
> > at mx.controls.dataGridClasses::DataGridColumn/itemToLabel()[C:
> > \autobuild\3.2.0\frameworks\projects\framework\src\mx\controls
> > \dataGridClasses\DataGridColumn.as:1410]
> > at mx.controls.dataGridClasses::DataGridBase/makeListData()[C:
> > \autobuild\3.2.0\frameworks\projects\framework\src\mx\controls
> > \dataGridClasses\DataGridBase.as:1328]
> > at mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/
> > internal::setupRendererFromData()[C:\autobuild\3.2.0\frameworks
> > \projects\framework\src\mx\controls\DataGrid.as:1645]
> > at mx.controls::DataGrid/commitProperties()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\controls\DataGrid.as:1608]
> > at mx.core::UIComponent/validateProperties()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5807]
> > at mx.managers::LayoutManager/validateProperties()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:
> > 539]
> > at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:
> > 689]
> > at Function/http://adobe.com/AS3/2006/builtin::apply()
> > at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628]
> > at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild
> > \3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]
>
> > A linha 216 do datagrid é a seguinte:
>
> > public function getTipoReuniao(item:Object,
> > column:DataGridColumn):String{
> > return item['tipo_reuniao']['tr_nome'];
> > //linha 216
> > }
>
> > A minha duvida acho que esta bem explicada, e parece ter uma simples
> > resolução.
>
> > Raciocinando um pouco:
>
> > *O primeiro array contem 5 arrays
> > *Cada um desses arrays tem 2 objetos
>
> > Na função estou referenciado assim: return item['tipo_reuniao']
> > ['tr_nome'];
> > Ou seja, ja acessa diretamente ??Tem algo errado...
>
> > Precisaria primeiro acessar a array depois o outro array e depois só
> > pegar o objeto.Só que mesmo debugando vi que esses arrays não tem id
> > ou um nome que eu possa usar para referencia-los, então como acessá-
> > los?
>
> > Resumindo: Preciso saber como acessar esses objetos que estão dentro
> > desses arrays sem nomes, ou então, qual outra maneira posso realizar
> > as consultas que utilizem duas ou mais tabelas?
> > On 22 jan, 21:09, RafaelViana <[email protected]> wrote:
> >> Eu conheco a labelFunction, uso ela para formatar as datas.Mas não
> >> tinha pensado nela nesse caso...Vou dar uma olhada, mas não sei com
> >> qual nome me refiro a essa array...
>
> >> On 22 jan, 19:03, Marco Catunda <[email protected]> wrote:
>
> >> > Rafael,
>
> >> > De uma olhada na propriedade 'labelFunction' do DataGrid
>
> >> >http://livedocs.adobe.com/flex/2/langref/mx/controls/listClasses/List...
>
> >> > Com essa propriedade você poderá criar uma função e trabalhar com o
> >> > dado do jeito que vc
> >> > quiser.
>
> >> > Para o seu problema seria algo semelhante com isso:
>
> >> > public function labelFunction(item:Object, column:DataGridColumn):String
> >> > {
> >> > return item['InnerJoinTable']['Field'];
>
> >> > }
>
> >> > --
> >> > Marco Catunda
>
> >> > 2009/1/21 RafaelViana <[email protected]>:
>
> >> > > Quando a pesquisa não utiliza inner join, o array é preenchido com
> >> > > objetos do tipo Reuniao, quando a pesquisa utiliza inner join ele é
> >> > > preenchido com Arrays e dentro de cada array tem um objeto Reuniao e
> >> > > um objeto TipoReuniao
>
> >> > > Pesquisa com Inner Join:
>
> >> > > @SuppressWarnings("unchecked")
> >> > > public List<Lancamento> findByDateAndUser(Date dataInicial,
> >> > > Date dataFinal, User user) throws Exception {
> >> > > return getHibernateTemplate().find("from Lancamento l
> >> > > INNER JOIN
> >> > > l.user as i WHERE i.user_codigo = ? AND l.lanc_data BETWEEN ? AND ?" +
> >> > > "ORDER BY lanc_data ASC", new Object[]
> >> > > {user.getUser_codigo(),
> >> > > dataInicial, dataFinal});
> >> > > }
>
> >> > > Pesquisa sem Inner Join:
>
> >> > > @SuppressWarnings("unchecked")
> >> > > public List<Lancamento> findByDate(Date dataInicial, Date
> >> > > dataFinal)
> >> > > {
> >> > > return getHibernateTemplate().find("from Lancamento l
> >> > > WHERE
> >> > > l.lanc_data BETWEEN ? AND ?" +
> >> > > "ORDER BY lanc_data ASC", new Object[]
> >> > > {dataInicial, dataFinal});
> >> > > }
>
> >> > > No DataGrid quando as pesquisas não utilizavam inner join, eu usava o
> >> > > dataField do DataGridColumn dataField="reun_data" acessava o objeto
> >> > > Reuniao diretamente, agora que ele retorna o array como faço para
> >> > > acessar o objeto reuniao dentro do Array?
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---