Conseguir trazer as tabelas com seus devidos campos, agora como vou montar frame com os filtros para o usuário digitar u selecionar, ou seja, o relatório A tem 3 filtros:
2 textimput: -mes -centro de custo e 1 combobox : -departamento Como vou armazernar essa informaçãoe e depois montar um frame, um popup ou um componente com esses campos. Em 10 de abril de 2012 10:21, Re JMD <[email protected]> escreveu: > Freddy, > > Obrigado pelas dicas vou focar nesse desenvolvimento e já te falo se tive > alguma dificuldade! > > Em 10 de abril de 2012 09:40, Fredy Gadotti <[email protected]>escreveu: > > O que eu faria. ( WALL OF TEXT ) >> Criaria um arquivo que listasse as tabelas que fossem passiveis de >> consulta. >> >> <tables> >> <table name="Fornecedores" /> >> <table name="Produtos" /> >> ... >> </tables> >> >> Assim não poderia consultar todas as tabelas. >> >> Cria uma tela com um ComboBox que carregaria esse XML. >> >> No meu servidor, eu teria um método que eu passaria o nome da tabela e >> ele retornaria a estrutura dela da seguinte forma. >> Campo, Tipo, Quantidade Máxima de Caracteres, ToolTip e por ai vai. >> Guardaria todas as informações dentro de um ValueObject e passaria >> para o lado Client. >> >> Exemplo: >> >> public class FieldInformationVO { >> public var name:String; >> public var type:String; >> public var toolTip:String; >> // Outros campos uteis >> } >> >> Chamaria o método criado que retornaria uma coleção de >> FieldInformationVO e com base nisso teria um segundo ComboBox com os >> campos da tabela que escolhi no primeiro ComboBox. >> >> Se eu escolher no segundo ComboBox o campo "código" ele adicionaria >> dinamicamente um TextInput ao lado direito do segundo ComboBox. Onde >> seria digitado o Valor para a query. E ao canto direito do TextInput ( >> ou qualquer outro campo dinamico ) adicionaria um botão de "mais" que >> poderia adicionar uma nova condição. >> >> Para fazer a query eu criaria uma classe para transportar os valores >> do filtro ( poderia adicionar mais de uma condição, e não apenas uma >> como você sugeriu ). >> >> O filtro eu faria da seguinte maneira, varreria os campos visuais do >> tipo pré-definido. Pegaria o nome do campo e qual o valor que ele >> recebeu e adicionaria novamente em uma coleção e enviaria para o >> servidor. >> >> No servidor eu daria iteraria sobre essa coleção e concatenaria o >> campo com o valor. >> >> var conditions:String = ""; >> >> for each ( var item:Object in filters){ >> if (conditions != "") >> conditions += " AND "; >> else if (conditions == ""){ >> conditions = " WHERE "; >> } >> >> conditions += item.fieldName + " = " item.fieldValue; >> } >> >> Talvez fosse necessário fazer alguma coisa para evitar SQL Injection, >> mas nem se preocupe com isso agora. >> >> Depois diria >> >> var fullSQL:String = "SELECT * FROM "; >> >> fullSQL += filter.tableName; >> >> fullSQL += conditions; >> >> >> >> Fiz em ActionScript mas pode converter a ideia para sua linguagem backend. >> >> >> >> 2012/4/10 Re JMD <[email protected]>: >> > Fredy, minha idéia seria fazer algo mais simples. >> > Tenho esse sql: >> > >> > select * from desvio where cd_departamento = [TextImput.text] >> > >> > E com essa informação aramazenada que o primeiro campo desse sql seria >> esse >> > textimput quando chamar o relatório ele deveria exibir esse pcampo para >> ser >> > digitado. >> > >> > Ou nesse caso: >> > >> > select * from vendas where cd_departamento = >> > [ComboboxDepartamento.selectedItem] >> > A minha dúvida é essa como armazenar a informação e depois como montar >> uma >> > tela com os componentes do select? >> > >> > Em 9 de abril de 2012 20:23, Fredy Gadotti <[email protected]> >> > escreveu: >> > >> >> Eu expliquei o que eu fiz no primeiro post, tenta dar uma relida para >> >> ver se fica alguma dúvida. >> >> Se não entender só explicar o que não entendeu que tenho melhorar essa >> >> parte :) >> >> >> >> 2012/4/9 Re JMD <[email protected]>: >> >> > Entao fredy, para eu salvar o xml no banco preciso de saber como >> >> > adcionar os >> >> > componentes pela interface da aplicacao, se houvesse alguma forma do >> >> > usuario >> >> > conseguir montar a tela filtro do relatorio eu salvaria esse xml >> >> > relacionado >> >> > com o relatoririo, como ja tenho o resultado sendo trazido por um xml >> >> > dinamico no qual posso montar o relatorio pelo stimulsoft so esta >> >> > faltando >> >> > criar um tela para geracao de filtro dinamico. >> >> > >> >> > Em 9 de abril de 2012 20:02, Fredy Gadotti <[email protected]> >> >> > escreveu: >> >> > >> >> >> Pior que não. A gente tinha montado do zero a solução. >> >> >> Por que não cria um campo do tipo XML no banco e salva ele do jeito >> >> >> que você montou e depois só lê ele para fazer o filtro? >> >> >> >> >> >> 2012/4/9 RE JMD <[email protected]>: >> >> >> > Fredy, >> >> >> > >> >> >> > Você conhece algum exemplo que tenha essa solução por você >> >> >> > apresentada? Já conseguir montar o XML dinâmicamente e o que está >> >> >> > faltando é entender como armazenar e apresentar os componentes >> filtro >> >> >> > de cada relatório! >> >> >> > >> >> >> > On 29 mar, 13:18, Fredy Gadotti <[email protected]> wrote: >> >> >> >> Precisei fazer isso em um projeto. O backend era Java, não tenho >> >> >> >> acesso aos fontes mas era algo mais ou menos assim, tinha um >> método >> >> >> >> que retornava a estrutura da tabela que queria fazer o relatório. >> >> >> >> Com >> >> >> >> a estrutura em mãos, populava um ComboBox com os campos que tem a >> >> >> >> tabela. Sabendo os tipos, era possível adicionar dinamicamente um >> >> >> >> editor equivalente ao tipo do dado da tabela, se fosse Data um >> >> >> >> DateField, se fosse String um TextInput se fosse Integer um >> >> >> >> TextInput >> >> >> >> com restrict e por ai vai; >> >> >> >> E mais um que indicava qual o tipo de filtro queria fazer, maior, >> >> >> >> menor, igualdade ou diferença. >> >> >> >> >> >> >> >> Exemplo do Filtro: >> >> >> >> >> >> >> >> Campo: [ ComboBox de Campos] | [ ComboBox de Condições ] | [ >> Campo >> >> >> >> dinâmico conforme tipo de dado ] [ Botão para adicionar nova >> >> >> >> condição >> >> >> >> ] >> >> >> >> >> >> >> >> Ao clicar no botão, adicionava uma nova linha onde podia escolher >> >> >> >> outras restrições. >> >> >> >> >> >> >> >> Ao clicar no botão aplicar, varria o filtro e criava uma coleção >> >> >> >> para >> >> >> >> enviar ao server para criar dinamicamente o SQL que iria fazer a >> >> >> >> filtragem. >> >> >> >> >> >> >> >> Espero ter dado o caminho das pedras. >> >> >> >> >> >> >> >> Abraço, >> >> >> >> >> >> >> >> Fredy. >> >> >> >> >> >> >> >> 2012/3/29 Re JMD <[email protected]>: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> > Pessoal, >> >> >> >> >> >> >> >> > Estou querendo desenvolver uma opção na minha aplicação para o >> >> >> >> > usuário >> >> >> >> > conseguir criar relatórios dinamicamente. >> >> >> >> > O design do relatório vou fazer via stimulsoft passando os >> >> >> >> > parâmetros(filtro) da aplicação para o relatório via URL. >> >> >> >> >> >> >> >> > - No cadastro do relatório o usuário informa quais >> campos(filtros) >> >> >> >> > o >> >> >> >> > relatório vai ter e isso ficará armazenado no banco. >> >> >> >> >> >> >> >> > - Quando o usuário chamar o relatório o flex vai montar o >> pop-up >> >> >> >> > com >> >> >> >> > os >> >> >> >> > filtros de acordo com o cadastro do relatório. >> >> >> >> >> >> >> >> > Tem como fazer isso? Existe algum exemplo? >> >> >> >> >> >> >> >> > -- >> >> >> >> > 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 >> >> >> >> > emhttp://groups.google.com/group/flexdev- Ocultar texto das >> >> >> >> > mensagens >> >> >> >> > anteriores - >> >> >> >> >> >> >> >> - Mostrar texto das mensagens anteriores - >> >> >> > >> >> >> > -- >> >> >> > 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 >> >> >> >> >> >> -- >> >> >> 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 >> >> > >> >> > >> >> > -- >> >> > 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 >> >> >> >> -- >> >> 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 >> > >> > >> > -- >> > 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 >> >> -- >> 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 >> > > -- 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
