Como pegar "LABEL" em vez do "VALOR" de um campo tipo select?

Bom dia, pessoal
Sou novato no SC.

Tenho um campo tipo Select:
Valor | Label
1 | Laranja
2 | Banana
3 | Melão

Como faço para pegar o Label em vez de o Valor selecionado?

Att.

Tem várias maneiras para isso, os colegas sabem melhor do que eu, vou sitar 2 delas.
Utilize Lookup na própria configuração do campo. http://www.scriptcase.com.br/blog/utilizando-as-macros-sc_lookup-e-sc_exec_sql/

Se o dado estiver em outra tabela:
/**

  • Selecting a field from another table
    */

// Check for record
$check_sql = “SELECT state_name, region”
. " FROM States"
. " WHERE state_id = ‘" . {field_state_id} . "’";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})) // Row found
{
{other_field} = {rs[0][0]};
{other_region} = {rs[0][1]};
}
else // No row found
{
{other_field} = ‘’;
{other_region} = ‘’;
}

Esse exemplo está no próprio SC.

Meu Select está assim no formulário configurado:
Nome do Campo: frutas
Método para Lookup: “Manual”
Conteúdo:
Label (Valor)
Laranja(1)
Banana(2)
Melão(3)

Vamos supor que o usuário selecione “Banana”, então SC deverá substituir o Label de um outro campo chamado “descricao” tipo: Text pelo Label escolhido no campo “frutas”, conforme abaixo:
if(!empty({frutas})){
sc_label(“descricao”) = {frutas};
}
Só que ele está preenchendo com o Valor do campo “frutas”, no caso, “2”, mas deveria ser “Banana”.
Já tentei colocar {frutas[0][1]} e não aparece nada.

Olá julianosc,

Mude então para:

Conteúdo:
Label (Valor)
Laranja(Laranja)
Banana(Banana)
Melão(Melão)

E veja se mostra corretamente.

Problema que preciso gravar o número no banco de dados do campo select “frutas”, FK de outra tabela. Só fiz lookup manual para carregar mas rápido o form.

Esse look up é o manual?
Então cria no seu banco uma tabela “frutas” e nela cadastra as frutas e use o lookup automático que certeza que vai da certo.

Ou se é fk de outra tabela da pra usar um inner join pra trazer o nome ao invés do número.

Abraço!

Tente

//lookup auto
if(!empty({frutas})){
faça um sc_lookup buscando a descrição
sc_label(“descricao”) = {nomelookup[0][0]};
}

ou
//lookup manual
if(!empty({frutas})){
if({frutas}==1)
{
sc_label(“descricao”) = “Nome 1”;
}
else if({frutas}==2)
{
sc_label(“descricao”) = “Nome 2”;
}
… etc
}

Era isso que queria evitar, por causa de manutenções futuras, até iria usar “switch”. Mas obrigado mesmo assim a comunidade. Achei que o SC tinha como pegar o Label.

Isso resolverá usando a opção que passei

Pessoal, consegui assim somente com JavaScript, vou compartilhar aqui:

[shadow=red,left][size=12pt]1º. Criação do Método JavaScript[/size][/shadow]

Em >Programação >Métodos JavaScript >Novo Método >Nome: pegaLabelCampo com conteúdo:
var label = F1.frutas.options[F1.frutas.selectedIndex].innerHTML;
document.getElementById(“id_label_descricao”).innerHTML = label;

[shadow=red,left][size=12pt]2º. Criação do Evento para realizar a função acima[/size][/shadow]

Em >Eventos Ajax >Novo Evento Ajax >Nome: trocaLabel com conteúdo a seguir:
sc_ajax_javascript(“pegaLabelCampo”);

Se alguém quizer melhorar, estamos aberto a sugestões.

Obrigado

Bom dia, Pessoal

Eu tentei automatizar esse Processo para reutilizar com outros campos da seguinte forma:

1º. Criação do Método JavaScript

Em >Programação >Métodos JavaScript >Novo Método >Nome: pegaLabelCampo([glow=red,2,300]campo[/glow]) com conteúdo:
var label = campo.options[campo.selectedIndex].innerHTML;
return label;

2º. Criação do Evento para realizar a função acima

Em >Eventos Ajax >Novo Evento Ajax >Nome: trocaLabel com conteúdo a seguir:
$novo_label=sc_ajax_javascript(“pegaLabelCampo”, array(“F1.frutas”));
f(!empty($novo_label)){
sc_label(“descricao”) = $novo_label;
}

Mas não consegui fazer funcionar, porque o método JavaScript não retorna nada. Alguém tem ideia?

Att.

Legal, obrigado por compartilhar.