Inserir combobox linha a linha (RESOLVIDO)

Em uma aplicação formulário eu tenho um campo chamado ano que é um select e eu faço assim para popular o select

SELECT ano_referente
FROM irrf_informespdf_anos
WHERE cpf = ‘{cpf}’ AND local = ‘{local}’
GROUP BY ano_referente
ORDER BY ano_referente DESC

Ai até ai tranquilo, porem eu preciso fazer isso em uma aplicação CONSULTA, mas a aplicação consulta não tem campo select.

Alguem tem uma solução para isso ?

Grato

Carlos

Use o lookup direto no campo da consulta.

Esse seu select pode retornar mais de um registro?

Sim…pode retornar mais de 1 registro

Estou tentando uma solução, mas não esta funfando

$sql = “SELECT ano_referente FROM irrf_informespdf_anos WHERE cpf = ‘{cpf}’ AND local = ‘{local}’
GROUP BY ano_referente ORDER BY ano_referente DESC”;
sc_select(rs, $sql);

sc_field_display({imprimir}, off);

{ano} = “”;
//{ano} .= ‘’;
while(!$rs->EOF)
{
$rs_valor = $rs->fields[0];
{ano} .= ‘’.$rs_valor.’’;
$rs->MoveNext();
}
{ano} .= “”;

{imprimir} = “”;
sc_field_display({imprimir}, on);
$rs->Close();

do que serviria um combo na consulta sendo que ela é apenas READONLY?

Justo, Wil.

Não faz sentido ter mais de uma opção para o campo numa consulta , a não ser que seja usado group_concat no sql do lookup para esse campo.

Eu tinha entendido que queria somente mostrar o dado… rsrsrs não tinha reparado que ele queria colocar um combobox na consulta. De fato o que Haroldo e Willian disseram faz total sentido.

Ou seja, não tem como…rs***

Jeito sempre tem, é que é uma coisa totalmente sem sentido.

Nos dê um argumento plausível para criar um campo com múltiplos resultados a serem exibidos apenas com ação do usuário em uma linha de uma consulta!

  • Crie um campo manual e no evento onrecord alimente com toda a tag hrml select.

Nem sei porque estou sugerindo como fazer, pois isso realmente não faz sentido algum.

Esse campo lista os informes anual.

Um uníco registro de cadastro para vários registros de informes

Eu utilizo hoje um formulario para isso com um campo select, mas queria ver se na consulta daria para fazer isso.

Olhem como é hoje

Dai utilizo um eventoajax on change no combo para carregar o informes do ano escolhido.

Só pensei que se derrepente desse para fazer isso em uma aplicação consulta, o visual ficaria melhor.

Sua questão já foi resolvida?

Ou ainda não sabe como fazer?

Como eu disse…eu fiz utilizando uma aplicação formulário…mas na aplicação consulta eu não consegui fazer.

Até fiz, assim

$sql = “SELECT ano_referente FROM irrf_informespdf_anos WHERE cpf = ‘{cpf}’ AND local = ‘{local}’
GROUP BY ano_referente ORDER BY ano_referente DESC”;
sc_select(rs, $sql);

sc_field_display({imprimir}, off);

{ano} = “”;
//{ano} .= ‘’;
while(!$rs->EOF)
{
$rs_valor = $rs->fields[0];
{ano} .= ‘’.$rs_valor.’’;
$rs->MoveNext();
}
{ano} .= “”;
$rs->Close();

Mas na hora de passar o valor do combo ele exibe assim

Mas eu dei a sugestão…

Evento onrecord:

$_combo=“20152016”;
{Campo_manual}=$_combo;

onde $_combo você obtêm o valor dinamicamente baseado no tabela em questão e no registro da linha que esta sendo processada.

Agora, a novidade não relatada inicialmente é ao selecionar ano você diz para apresentar informações sobre o informe do ano selecionado…

Quantas dados devem ser apresentado (campos) ? De que forma quer apresentar (em uma modal) na mesma linha da consulta?

Porque não criar uma subreport???

Vc clica no ano…ele abre um pdf em uma pasta especifica

Evento onClick do campo

// SE FOR ESCOLHIDO UM ANO
//if ({ano} != ‘’){
// FAZ O FILTRO
sc_lookup(rs, “SELECT ano_referente, nome_arquivo
FROM irrf_informespdf_anos
WHERE ano_referente = ‘{ano}’
AND cpf = ‘{cpf}’
AND local = ‘{local}’”);

if (!empty({rs}))
{
$rs_ano = {rs[0][0]};
$rs_nome_arquivo = {rs[0][1]};

   $caminho = 'http://www.url.sp.gov.br/administracao/informes';
   $arquivo = $caminho."/".$rs_ano."/".$rs_nome_arquivo;

   $file_headers = @get_headers($arquivo);
   if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
      sc_alert("Nenhum informe encontrado para o ano informado.");
   }else {
      sc_redir($arquivo, "", "_blank");
   }	

}else{
sc_ajax_message(“INFORMES INDISPONÍVEIS…”, “”, “timeout=50&show_close=Y”);
}
//}

Crie uma subconsulta ligada a consulta principal, pode ser em modo slide, para apresentar um ano do lado do outro.
E na onrecord da subconsulta utilize sc_link para cada coluna apontando para seu pdf.

Em consultas é assim que se trabalha. Acho que se está criando um cavalo de batalha para algo que é simples, porque complicar???

Tudo isso pq os meus queridos “usuarios” não querem clicar na subconsulta…eles querem que os anos estejam relacionados ao lado do nome.

mas não vão ter que clicar na combo?

Você pode posicionar a subconsulta…

Se um cliente meu fizer esse tipo de exigência vai pagar bem caro por isso.

Valeu pessoal pela ajuda…acabei deixando em um formulario mesmo com campo select.

Obrigado a todos

Karlos, não estamos nos negando a ajudar, mas acho importante questionar procedimentos não habituais…

É possível você fazer o que deseja na consulta, mas antes seria interessante você testar a sugestão dada e ver como os seus usuários vão se comportar a respeito, se rejeitarem a todo custo, aí partimos para o procedimento fora do padrão.

Fique tranquilo Haroldo…vcs ja me ajudaram em outras oportunidades, eu ja ajudei algumas pessoas e vamos continuar nos ajudando…é que eu pensei em uma solução para facilitar a vida de alguns, mas nem sempre é a saida mais razoavel…acabei optando pelo metodo mais funcional e resolveu o problema. As vezes queremos reinventar a roda e nem é tão necessário assim…obrigado pela sua ajuda. Grande abraço.