Carregar Dados de um campo texto com base em outro



  • bom dia,

    gostaria de tirar uma duvida, tenho em meu banco de dados uma tabela chamada "Cidades", nela tenho as colunas "cidade e estado", no Maker gostaria de fazer o seguinte, através de uma lista dinâmica (isso já foi feito), gostaria de carregar as cidades, até ai tudo OK, porém após selecionar a cidade, gostaria que automaticamente o campo estado fosse preenchido com o estado correspondente a cidade selecionada! tem como? como posso fazer isso?


  • Você pode usar um fluxo no evento "Ao Modificar" da Lista das Cidades. Este fluxo irá receber como parâmetro de entrada o valor da cidade, irá fazer uma consulta na tabela de cidades (com a função "Abrir Consulta"), obter o Estado correspondente (usando a função "Campo" para obter o valor de um campo em uma consulta) e exibir o estado obtido na sua lista de estados (utilizando a função "Alterar Valor do Componente").

    Existem formas de fazer sem fluxo também, mas se você estiver iniciando no Maker acho mais interessantes utilizar bastante o fluxograma, para se acostumar mais rapidamente com o estilo de programação da ferramenta.


  • O campo Cidade já esta carregando as cidades que estão em uma outra tabela, para carregar as cidades usei o item propriedade, clicando em propriedade e escolhendo a opção em SQl, agora você poderia me falar como proceder para carregar estado fiz como você sugeriu e não deu certo.


  • se você puder passar uma forma também de fazer sem fluxo, seria interessante.


  • Você conseguiu fazer até que ponto do procedimento que eu sugeri?

    Se quiser tentar o procedimento sem fluxograma, pode ler este tópico do manual, e adaptar ao seu caso:
    http://suporte.softwell.com.br/maker/manual2_7/pt/dicas_e_truques/componente/como_filtrar_lista_dinamica_atraves_do_outro_componente_lista_dinamica.htm


  • Veja bem, na minha tabela Cidades, tenho os campos Estado e Cidade, na mesma tabela, coloquei no meu formulário no Maker, uma Lista dinâmica, nela listo as cidades cadastradas no meu sistema. O que preciso agora é que ao escolher a cidade Por ex: Salvador, que seja carregado no campo Estado, o estado que esta Vinculado a Cidade, no caso Bahia, tudo esta na mesma tabela, tanto cidade quanto estado, ficando em meu banco de dados a seguinte estrutura:

    codcidade
    cidade
    uf


  • Você vai usar a mesma lógica do link do manual que eu te passei, 2 Listas Dinâmicas, uma com cidades e outra com estados, a Lista de Estados será filtrada pela de cidades, de modo que ao selecionar um valor na Lista de Cidades, a consulta da Lista de Estados seja filtrada, para trazer apenas o Estado relativo àquela cidade selecionada.

    O raciocínio lógico que você vai usar é o mesmo do Manual.


  • Entendi, porém acredito estar faltando algo, criei as duas consultas como no modelo. porém quando você se refere ao filtro, a que exatamente você esta se referindo?

    veja no link como fiz:
    http://ginfor.net/maker/print.gif

    mesmo assim ele não carregou apenas o estado.


  • O filtro é o que está descrito no manual no "where" da consulta:

    Where
    ger_estado.est_cod = :est_cod

    Você vai colocar na coluna "Critério" da sua consulta a sentença:
    =:nome_do_campo

    "nome_do_campo" será o nome do campo na sua tabela que irá filtrar a consulta da Lista de Estados. Anexei um exemplo baseado no manual, acredito que com este exemplo você conseguirá entender como proceder.
    [92_exemplo_de_lista_filtrando_lista.frz](/assets/uploads/files/92_exemplo_de_lista_filtrando_lista.frz)


  • da uma olhada no meu formulário, o campo é o Cidade e estado.
    http://ginfor.net/maker/clientes.rar

    no caso quero que ao escolher a cidade, que carregue o estado que esta na mesma tabela que ela. Veja ai o que está errado.


  • O arquivo que você enviou veio sem as tabelas.


  • Consegui fazer atravez de um fluxograma, porem ele ta um erro, "erro de compilação # auto completar # Consulte o log de aplicação:

    Exceção Gerada:
    wfr.exceptions.WFRCompileException: java.lang.Exception: C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: illegal start of expression INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: ')' expected INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ 2 errors at wfr.util.Functions.compileFile(Functions.java:3475) at wfr.util.Functions.compileFile(Functions.java:3431) at wfr.util.Functions.compileFile(Functions.java:3408) at wfr.rules.RulesClassLoader.compile(RulesClassLoader.java:140) at wfr.rules.WFRRuleManager.create(WFRRuleManager.java:377) at wfr.rules.WFRRuleManager.getRuleClass(WFRRuleManager.java:110) at wfr.web.actions.ExecuteRuleAction.execute(ExecuteRuleAction.java:160) at wfr.web.Action.doAction(Action.java:126) at wfr.web.Controller.process(Controller.java:100) at wfr.web.Controller.doPost(Controller.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at wfr.web.ContextFilter.doFilter(ContextFilter.java:78) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.Exception: C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: illegal start of expression INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: ')' expected INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ 2 errors at wfr.util.Functions.compileFile(Functions.java:3467) ... 27 more

    Causa:
    java.lang.Exception: C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: illegal start of expression INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ C:\Program Files (x86)\Softwell Solutions\Maker 2.6\Webrun 2\tomcat\webapps\webrun/src/wfr/com/systems/system_inc/rules/AutoCompletar.java:55: ')' expected INPUT[0] = ebfSQLExecuteQuery(, Variant.VARIANT_NULL); ^ 2 errors at wfr.util.Functions.compileFile(Functions.java:3467) at wfr.util.Functions.compileFile(Functions.java:3431) at wfr.util.Functions.compileFile(Functions.java:3408) at wfr.rules.RulesClassLoader.compile(RulesClassLoader.java:140) at wfr.rules.WFRRuleManager.create(WFRRuleManager.java:377) at wfr.rules.WFRRuleManager.getRuleClass(WFRRuleManager.java:110) at wfr.web.actions.ExecuteRuleAction.execute(ExecuteRuleAction.java:160) at wfr.web.Action.doAction(Action.java:126) at wfr.web.Controller.process(Controller.java:100) at wfr.web.Controller.doPost(Controller.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at wfr.web.ContextFilter.doFilter(ContextFilter.java:78) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595)

    segue em anexo o fluxo que eu fiz:
    http://ginfor.net/maker/auto_completar.rar

    infelizmente não localizei onde errei no fluxo, se puder dar uma olhada por favor.


  • obs: o erro aparece após eu selecionar a cidade, na hora de carregar o estado.


  • Você atribuiu o resultado do primeiro processamento (Abrir Consulta) à variável "Cidade", sendo que deve ser atribuído à variável "Tabela".


  • Certo, porém não sei como proceder com essa alteração, pode me passar um caminho? porque meu primeiro processamento "abrir Consulta esta ligado a um Comando de Seleção ou Wizard.


  • Uma imagem vale mais do que mil palavras...
    [92_fluxo.jpg](/assets/uploads/files/92_fluxo.jpg)


  • fiz a mudança porem o erro continua veja o fluxo alterado.

    http://ginfor.net/maker/auto_completar2.rar


  • Cara, exporta aí seu formulário com as tabelas e os fluxos associados pra eu ver como está.


  • segue:
    http://ginfor.net/maker/Clientes2.rar


  • Segue o fluxo corrigido em anexo. Os erros eram:
    1 - Não preencheu o parâmetro de filtro na função "Abrir Consulta"
    2 - Não marcou o campo "uf" na consulta
    [92_auto_completar_correto.rar](/assets/uploads/files/92_auto_completar_correto.rar)

Log in to reply