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

Responder a