Ninguém?? Como voces realizam as pesquisas que utilizam duas ou mais tabelas??
On 29 jan, 22:24, RafaelViana <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---
