Olá galera,
Indo direto ao ponto, a minha sugestão é extamente o que está no título: Lookup de edição 100% dinâmico para campos do tipo select e radio. Provavelmente através de uma macro, tipo: sc_field_lookup(); ou sc_field_set_lookup()
Agora…
explicando o meu problema.
Eu criei (sim… no passado mesmo) um questionário com quase 1000 campos.
Pela quantidade de campos, é claro que eu tive que pensar de uma forma de automatizar as coisas.
Como resultado dessa necessidade, eu criei uma estrutura onde o usuário cadastra as perguntas, as respostas e seus tipos. Uma espécie de gerador de questionários para o Scriptcase…
estou até pensando em disponibilizar uma biblioteca neutra (sem regras de negócio) deste tipo para a comunidade, mas só se a Netmake me ajudar a fazer um trabalho de qualidade, pois assim posso ter orgulho da minha “criação” hehehe
Então…
todas as 1000 perguntas do questionário estão disponíveis no banco de dados.
Não somente as perguntas, mas também as respostas que serão exibidas nos selects e radios estão no banco.
Claro que eu criei toda a minha solução em forma de um algorítmo independente de ferramenta…
E quando fui implementando ele com as ferramentas reais, eu comecei a enfrentar as limitações (entenda Scriptcase) que elas me impõem.
A primeira das limitações (essa eu aceito) é que eu não consegui fazer com que o Scriptcase gerasse os campos das aplicações a partir dos REGISTROS de perguntas que tenho no banco de dados…
Ou seja, isso acontece porque eu não tenho uma tabela com 1000 campos como o Scriptcase gostaria que eu fizesse…
o que eu tenho é 1000 registros de perguntas.
Logo o Scriptcase não consegue me auxiliar na criação dos campos como poderia…
E como resultado eu tive que criar 1000 campos na através da interface do browser… que apesar de ser localhost ainda gasta um tempinho no carregamento.
Gastei horas por conta disso…
Eu sei que é pedir de mais, mas o que o Scriptcase poderia me oferecer é o seguinte:
Uma forma de criar campos EM MASSA a partir do resultado de uma query…
Eu poderia pegar as perguntas do banco de dados e o Scriptcase (na interface do browser mesmo) criar os campos a partir de um atributo do tipo String o qual ele usaria como nome do campo…
Mas tudo bem,
como disse antes, essa é uma situação que eu aceito…
O problema, é que depois deu criar todos os campos eu também tive que configurar os selects e radios de todas as perguntas desse tipo para criar uma query que é completamente igual, só variando uma parte do WHERE.
E antes que vcs me digam que eu poderia utilizar uma variável global, sim… eu sei disso também.
O problema é que do ponto de vista do problema e do meu algorítimo, não há necessidade deu ter que executar essa tarefa de geração manual dos WHERES para os selects e radios.
Eu poderia gerar sem problemas todos os WHERES de todos os campos selects ou radios a partir das informações que eu tenho no banco e simplesmente “setar” os “Lookup de edição” dos campos automaticamente através de uma macro como eu disse acima.
Deixa eu mostrar na prática o que foi que eu tive que fazer e o que eu poderia fazer:
para a pergunta 1.2.1, que tem como nome do campo: {p_1_2_1} e ela está banco…, eu tenho que fazer a query:
“SELECT id, resposta, ordem
FROM “public”.qipef_qualitativa_reincidente
WHERE qipef_pergunta_id=‘p_1_2_1’”
para a pergunta 1.6, que tem como nome do campo: {p_1_6} e ela está banco…, eu tenho que fazer a query:
SELECT id, resposta, ordem
FROM “public”.qipef_qualitativa_reincidente
WHERE qipef_pergunta_id=‘p_1_6’
e assim continua… mais ou menos umas 600 vezes.
Agora, eu posso garantir a vocês: eu tenho o CTRL+C, CTRL+V mais rápido do Nordeste.
Ou seja…
se vc tem que fazer isso 600 vezes, costuma-se dizer aqui em Salvador/BA que isso é um trabalho de corno…
E, repetindo, eu sei que eu poderia fazer o seguinte, usando variável global:
SELECT id, resposta, ordem
FROM “public”.qipef_qualitativa_reincidente
WHERE qipef_pergunta_id=[variavel_global_qualquer]
porém, mesmo fazendo isso eu ainda tenho que navegar através da interface… passando por 600 perguntas!
quando na verdade era pra ser algo mais ou menos assim:
for($i=0;$i<count($perguntas);$i++) {
sc_field_set_lookup(monta_lookup_por_pergunta($perguntas[$i]));
}
E além disso,
eu também notei que por algum motivo oculto… eu não posso colocar na seção “Lookup de Edição” dos campos, apenas uma variável global, pois o Scriptcase percebe meu artifício e me impede de fazer isso.
Isso não só me impede como acaba acontecendo um BUG, eu acho, onde o Scriptcase acaba utilizando a ultima lookup de edição que encontra-se salva na variavel $_SESSION o que resulta em repetição dos valores apresentados…
sim… sim…
eu passei horas olhando como a aplicação gerada pelo scriptcase funciona, tentando contornar meu problema com os lookups de edição státicos…mas não consegui e tive que vim aqui no fórum levantar a bandeira branca…
ficarei grato por qualquer feedback de vcs!
José Gomes