Ajuda com campo duplo select

Procurei no webhelp e aqui no forum mas não achei nada que indique como trabalhar com campo duplo select. Algum dos colegas poderia explicar como se deve usar este tipo do SC? Como deve ser o campo na tabela, se deve-se usar uma terceira tabela para armazenar seus valores, como o SC separa os valores selecionados… Enfim, como utilizar o recurso deste tipo de campo. O webhelp mostra pra que serve mas não mostra como aplicá-lo numa situação real.

Obrigado a todos.

Rodrigo Araújo

Rodrigo,

Eu sempre uso o duplo select em filtros, por exemplo, quando quero selecionar vários bairros de um mesmo município.

Nunca usei em formulários.

Enviei para seu e-mail uma imagem do filtro usando duplo select.

George Carvalho

Blz, vou dar uma olhada, obrigado.

Em um sistema aqui eu tenho um campo que define quais grupos de colaboradores podem acessá-lo e o campo duplo select cairia como uma luva, pois daria pra definir mais de um grupo de uma só vez, só não sei como adaptá-lo a isso.

Valeu pela ajuda.

Rodrigo Araujo

Funciona em formulário, fiz os testes e o campo ficou assim:

O traidor;Os encrenqueiros;Outro sem imagem;Sem foto;Teste sem imagem

Inclusive lembrei que a rotina de aplicações/grupos disponibilizada pelo NM funciona desta maneira.

George Carvalho

Muito legal, pelo jeito o SC já trata tanto a gravação como a leitura deste campo. Basta deixar um campo varchar com um tamanho razoável então.

Brigadão pela dica!

Rodrigo

Após ler alguns posts no forum que por sinal estão muito bem explicados, consegui gravar os valores selecionados de um campo do tipo duplo-select na minha base de dados separados por (vírgula) normalmente e tudo funcionou perfeitamente.

Gostaria de saber se é possível recuperar as informações gravadas na base em um campo do tipo duplo-select em um formulário. Ex: Tenho um campo do tipo duplo select onde seleciono as cores: Amarelo, Azul e Verde de uma lista de 12 cores e que foram gravados na base de dados assim : Amarelo,Azul,Verde. Quando estou no formulário exibe normalmente as 3 cores selecionadas e gravadas na coluna da direita do campo duplo-select mas quando recarrego ou tento buscar os mesmos dados em uma edição do formulário por exemplo o campo duplo select não exibe as cores conforme gravado na base de dados deixando as cores selecionadas e gravadas na base de dados na coluna da direita do campo.
Alguém poderia me ajudar por favor…

Renato, na edição do registro, elas vem do lado direito porque são o conteúdo do campo, esse é o funcionamento normal do campo. Pra não aparecer nada do lado direito o campo tem que estar vazio.

Por exemplo tenho o campo do tipo duplo-select Operadoras conforme imagem abaixo sendo que do lado esquerdo tenho todas as operadoras de celular que o usuário pode selecionar que busco através de um lookup da tabela tab_operadoras e do lado direito tenho as operadoras já selecionadas pelo usuário salvas em outra tabela tab_chamado no padrão já explicado gravados no mesmo campo assim: CHIP OPERADORA CLARO,CHIP OPERADORA OI
Gostaria de recuperar do lado direito do campo duplo-select todas as operadoras conforme imagem e do lado direito as já selecionadas salvas na outra tabela e caso o usuário selecione alguma outra operadora não selecionada do lado esquerdo seja possível atualizar o campo na base de dados na tabela B.

http://imageshack.us/photo/my-images/338/operadoras.png/

Alguém consegue ajudar por favor???

Ninguém do fórum consegue me ajudar no post anterior?

qual a estrutura de suas tabelas?
Tentou usar dependências no Sc?

Pelo que entendi você quer que as opções selecionadas que foram para o lado direito continuem aparecendo no lado esquerdo do campo?
Isso foge totalmente da real forma de trabalho desse tipo de campo, ele carrega com lookup as opções e você grava em outra tabela as opções selecionadas.

Tenho 2 tabelas da seguinte forma:

Tabela onde estão cadastradas as operadoras de telefonia celular:
TAB_ TIPO_COMUNICADOR
cod_tipo_comunicador - INT - (PK)
nome_tipo_comunicador - VARCHAR - Onde está gravado (CHIP OPERADORA TIM, CHIP OPERADORA OI etc…)

TAB_CHAMADO
cod_chamado - INT - (PK)
cod_tipo_comunicador - VARCHAR - Onde gravo as operadoras selecionas no campo duplo-select no padrão (CHIP OPERADORA CLARO,CHIP OPERADORA OI,CHIP OPERADORA TIM)
etc…

Tenho o seguinte lookup no campo duplo select:
SELECT nome_tipo_comunicador, nome_tipo_comunicador
FROM TAB_ TIPO_COMUNICADOR
ORDER BY nome_tipo_comunicador

O lookup acima trás as operadoras para seleção normalmente e grava no banco de dados as operadoras selecionadas na tabela TAB_CHAMADO no padrão deste post separado por vírgula.
Eu preciso que o próprio campo duplo-select consiga recuperar os valores já selecionados do lado direito do campo, gravados na tabela TAB_CHAMADO e também seja possível alterar a seleção selecionando do lado esquerdo as outras opções de operadoras disponiveis conforme o lookup com a tabela TAB_ TIPO_COMUNICADOR.

OBS: Utilizo o campo duplo-select em um formulário.

Eu faço o que o amigo Saulo disse carrego com lookup as opções de operadoras e gravo em outra tabela as opções selecionadas.

O que preciso é editar o campo duplo-select utilizando as opções da TAB_TIPO_COMUNICADOR visualizando as informações já selecionados e gravados anteriormente na TAB_CHAMADO.

Caso não tenha sido claro, podem me perguntar que respondo amigos.

Desde já agradeço pelo empenho em me auxiliar.

Eu preciso que o próprio campo duplo-select consiga recuperar os valores já selecionados do lado direito do campo, gravados na tabela TAB_CHAMADO e também seja possível alterar a seleção selecionando do lado esquerdo as outras opções de operadoras disponiveis conforme o lookup com a tabela TAB_ TIPO_COMUNICADOR.

Não consegui entender o que realmente precisa. Tem como simular numa imagem e postar aqui?

Segue link com imagem explicativa.

http://imageshack.us/photo/my-images/836/duploselect.jpg/

Obrigado pela ajuda amigo Haroldo.

vc tem dois duplos selects (um para cada tabela?)?

Você está usando dependência para esses duplos selects ou apenas é o tipo de campo?

Em dependência, funciona como os grupos da segurança do sc, tem uma tabela intermediadora.

Qual o nome dos campos.

Desculpa, mas mesmo com sua explicação, não consigo entender a dificuldade.

me adicione a seu skype, para ver se consegue me passar melhor sua dificuldade.

Notas:

Campo_A (Mult-Select com uma query do tipo select id, descricao from tabela)

  • Ao selecionar o as linhas do select da esquerda enviando para a direita o valor do Campo_A fica com os ids selecionados separados por virgula (se a virgula for o separador escolhido).

Exemplo: Campo_A = “1,5,8”;

ids 1, 5 e 8 da tabela são os ids selecionados.

para passar esses valores para outro campo.

{Campo_B}={Campo_A};

se Campo_B também form um multselect cujo a SELECT é a mesma do Campo_A ou seja = select id, descricao from tabela, o Campo_B terá os valores selecionados no Duplo_Select do Campo_A.

Tenho apenas um campo do tipo duplo-select.

Não estou usando dependência. É apenas um campo do tipo duplo-select que estou utilizando, sendo que opções de operadoras que posso selecionar estão em uma tabela e as selecionadas são gravadas em outra tabela no padrão separado por vírgula.
Ex:

Seleciono algumas operadoras no campo e mando inserir, as operadoras selecionadas são gravadas na base de dados na tabela TAB_CHAMADO, mas quando atualizo o formulário as operadoras selecionadas já gravadas não são exibidas do lado direito do campo como selecionadas (Ficando como se eu não tivesse selecionado nenhuma operadora, mesmo possuindo os registros das operadoras gravadas na TAB_CHAMADO).

Eu acabo de te ADD no SKYPE para que possa lhe explicar melhor amigo.

é porque acredito serem campos diferentes, você está tratando tabelas diferentes.

Então não é possível utilizar um único campo do tipo duplo-select para trazer do lado esquerdo informações de uma tabela e do lado direito informações já gravadas em outra tabela.
Certo?
Não é possível utilizar este tipo de campo para edição de registros? Tem alguma sugestão?

É possível sim.

crie um evento do tipo onchange no campo duplo select ou coloque nos eventos onafterinsert e onafterupdate o seguinte código.
entendendo que a tabela principal do formulário contém o campo_a.

$_sql="Update outra_tabela set campo_b='".{campo_a}."' where sua_condição";
sc_exec_sql($_sql);

Sim é possível…o campo foi feito com essa finalidade. Acabei de fazer um teste aqui:
Fiz um lookup com as categorias de movimentos, gravo essas categorias separadas por virgula na minha tabela de movimentos.

Atualizei a página, fechei e abri de novo e o campo esta voltando com o lookup preenchido e as opções selecionadas anteriormente estão aparecendo do lado direito corretamente.

Acredito que o tipo de campo onde você esta gravando lá na tabela TAB_CHAMADO não comporta os dados, você tem certeza que o campo lá esta como string, porque se estiver como integer não vai gravar…