locked
Caixa de Seleção Inteligente conforme condição... RRS feed

  • Pergunta

  • Pessoal,

    Sou iniciante e preciso de uma ajudinha basica para quem ja entende do assunto,

    Tenho uma tabela que contem alguns dados que repetem Exemplo Cliente, eu tenho o CIOP que contem varios SITES em endereços diferentes, porem eu em outra tabela preciso usar sempre esses dados para gerar uma Ordem de Serviço, mais eu nao consigo fazer uma caixa de seleção filtar os Sites que são relacionados ao Cliente.

    A outra situação é que esses dados tem que ser automaticamente importados para outra tabela em capos com os mesmos nomes apos o usuário selecionar qual site daquele cliente ele deseja registrar uma Ordem de Serviço.

    Tabela Cad_Sites
    Cliente Site Endereco
    CIOP BLM505-0341 CPE-BLM505-1628 CASTILHO FRANÇA / PRESIDENTE VARGAS / CONTORNO
    CIOP BLM505-0342 CPE-BLM505-1634 CASTILHO FRANÇA / FRUTUOSO GUIMARÃES
    CIOP BLM505-0345 CPE-BLM505-1676 QUINZE DE NOVEMBRO / PADRE EUTIQUIO
    CIOP BLM505-0349 CPE-BLM505-1686 PRESIDENTE VARGAS / MANOEL BARATA
    CIOP BLM505-0352 CPE-BLM505-1688 PRESIDENTE VARGAS / OSVALDO CRUZ
    CIOP BLM505-0353 CPE-BLM505-1701 NAZARÉ / PTE. VARGAS / SERZEDELO
    CIOP BLM505-0355 CPE-BLM505-2516 PADRE EUTIQUIO / TAMOIOS
    CIOP BLM505-0357 CPE-BLM505-1720 PADRE EUTIQUIO / TAMANDARÉ
    CIOP BLM505-1865 CPE-BLM505-2563 JOÃO DIOGO / PADRE EUTIQUIO
    CIOP BLM505-1866 CPE-BLM505-2561 PORTUGAL / 15 DE NOVEMBRO
    CIOP BLM505-1869 CPE-BLM505-2560 AUGUSTO MONTE NEGRO / PEDRO ÁLVARES CABRAL
    CIOP BLM505-1902 CPE-BLM505-2557 ALTE. BARROSO / AV. DALVA
    CIOP BLM505-1905 CPE-BLM505-2554 BR316 / KM2 /SHOPPING CASTANHEIRA
    CIOP BLM505-1906 CPE-BLM505-2520 LEITURA / ALTE. BARROSO / JOSÉ MALCHER
    CIOP BLM505-1907 CPE-BLM505-2518 OPERÁRIO / ALTE. BARROSO / CIPRIANO SANTOS
    CIOP BLM505-1910 CPE-BLM505-2517 MAGALHÃES BARATA / JOSÉ BONIFÁCIO
    Oi/TELEMAR BOLANDEIRA RUA DOS COLIBRIS, 235
    CONTAX CAMPO DA POLVORA RUA PROFESSORA ANFRÍSIA SANTIAGO, 212
    CONTAX COMÉRCIO RUA PORTUGAL, 74
    CONTAX FORTALEZA AVENIDA BORGES DE MELO, 1677
    Oi/TELEMAR ITAIGARA AVENIDA ANTÔNIO CARLOS MAGALHÃES, 881
    CONTAX REFICE I - PRINCIPE RUA JOAQUIM FELIPE, 149
    CONTAX REFICE II - CONQUISTA RUA ALMEIDA CUNHA, 40
    TIM SA103 QUARTEL MILITAR AV. SILVEIRA MARTINS, S/N
    TIM SA69 CATU RUA CAPITÃO MANOEL JOSÉ, LOTE 41 - QUADRA G
    TIM SA94 BONOCO AV. MÁRIO LEAL FERREIRA Nº603
    CIOP SEDE RUA CESÁRIO ALVIM, 691


    Criei um relacionamento, porem ele lista todos os endereços cadastrados na tabela acima, e nao só os que contem CIOP como cliente.
    Ordens_de_Servico
    Cliente Site
    CIOP BLM505-1905 CPE-BLM505-2554


    Alguem sabe como que é eu faço essa tarefa de SE for CIOP listar somente sites que contem CIOP como cliente.


    quarta-feira, 5 de setembro de 2007 17:03

Todas as Respostas

  • Leandrão...

     

    Vale considerar a análise inicial que, primeiramente, seria realmente ótimo que sua tabela tivesse um código ID, que identifique cada registro. Assim é possível que vc garanta perfeição no relacionamento que posteriormente pode ser criado para 'importar o registro de uma tabela para outra'! Certo?

     

    Caixa de seleção? Acho que é caixa de combinação, não é?

    Toda caixa de combinação tem uma Fonte/Origem de Controle, que é geralmente determinada por meio de uma instrução SQL. Tem costume em trabalhar com instruções em SQL?

    Então, no objeto Caixa de Combinação, escreva uma instrução SQL parecida com esta (claro, faça as adaptações para os campos que vc quer fazer aparecer na caixa de combinação):

     

    SELECT Cliente, Site FROM TabelaClientes WHERE Cliente = "CIOP" ORDER BY Site.

     

    Nessa instrução acima vc estará visualizando o conteúdo do campo Cliente e do Campo Site da tabela TabelaClientes quando ainda o registro tiver o valor CIOP no respectivo campo Cliente.

    Caso tenha dificuldades para escrever esta instrução SQL, o próprio access disponibiliza uma interface igual à da criação de uma consulta seleção, pela qual vc pode definir através do arraste do mouse quais os campos que deseja, e ainda também definir quais os critérios (Campo Cliente = "CIOP"). Para acessar esta interface de criação de consultas, clique ao lado do botãozinhu da propriedade Fonte/Origem de Controle do objeto caixa de combinação.

     

    Bom...referente à importação do registro da TabelaClientes para a tabela Ordens_de_Servico:

    Após criar a Ordem de serviço com o respectivo cliente, este será excluído da TabelaClientes ou ainda estará permanente?

    Se ainda estiver permanente, na tabela de Ordens_de_servico, em vez de vc duplicar o registro de cliente, vc apenas armazena o Código ID (relacionamento) do registro de cliente que faz parte daquela Ordem de Servico. Posteriormente, quando for visualizar os dados ou efetuar um relatório de ordens de serviço, vc pega o respectivo Código ID do cliente, procura as respectivas informações equivalentes na TabelaClientes e mostra o resultado para o usuário.

     

    Se for este o caso, é possível ainda que a caixa de combinação também traga o código id do respectivo registro que o usuário escolheu, e posteriormente é só vc armazenar este valor na tabela Ordens_De_Servico. Caso não seja essa sua situação, para duplicar realmente o registro e não relacionar, vai ter de ser feita uma outra programaçãozinha que posso tentar te ajudar se for o caso...

     

    Faça os testes e retorne os resultados.

    Abraços,

    quarta-feira, 5 de setembro de 2007 22:17
  • Show, sua explicação foi proveitosa, vou primeiramente tentar fazer a modificação com o ID, pois com a sua dica eu ja detectei um erro gravissimo.

     

    Irei melhorar minhas tabelas e dai tentarei fazer essa caixa de combinação armazenando somente a ID e importando somente em modo de visualização os demais dados que são fixos sempre na tabela Cliente / Site. Peço a você um pouco de tempo, pois sou iniciante e estou fazendo o sistema para meu uso pessoal e estou tendo que estudar cada solução conforme a necessidade.

     

    Obrigado mesmo,

     

    Abraço,

     

    ass. Leandro Miranda

    quinta-feira, 6 de setembro de 2007 12:06
  • skyz!n,

    Brother seguinte, fiz a melhoria na tabela contendo ID em autonumeração e como chave primaria na tabela.

    Inseri no formulario Ordens de Serviço uma Caixa de Combinação e coloquei nessa caixa de combinação uma consulta SQL que exibe as informações na ordem ID, Cliente, Site, Endereço, porem quando eu seleciono um o ID é capturado para o campo CodClienteSite na Tabela Ordens de Serviço ate aqui tudo bem.


    No formulario usei uma função de um codigo que vi na web, bem assim:

    Esse codigo abaixo quando eu seleciono um item da caixa de combinação ele exibe em umas caixas de textos que estao no formulario que tem o nome iniciado por x.

    O problema é que ao navegar em dois ou mais registros o ID na Caixa de Combinação muda, porem os dados no nas caixas de texto permanecem os mesmo do resgistro anterior e o ID na caixa de combinação continua mudando normalemente, porem esses dados nao sao acoplados ele sao somente uma  informação util ao usuario na hora do atendimento.

    Private Sub ComboCodSite_AfterUpdate()
    On Error Resume Next

        ComboCodSite.SetFocus
       
        Me.xCliente = ComboCodSite.Column(1)
        Me.xSite = ComboCodSite.Column(2)
        Me.xEndereco = ComboCodSite.Column(3)
        Me.xBairro = ComboCodSite.Column(4)
        Me.xCidade = ComboCodSite.Column(5)
        Me.xEstado = ComboCodSite.Column(6)
        Me.xCep = ComboCodSite.Column(7)
    End Sub


    Ao mudar de registro as caixas de texto nao sao atualizadas com os respectivos dados vinculados ao ID existente nela.

    Veja a foto da minha consulta e do meu formulario: http://www.videoseg.com.br/errolinux/ajudaMSDNCaixadeCombinacao1.JPG

    quinta-feira, 6 de setembro de 2007 14:52
  • Opa Leandro...

    que bom que através de minhas dicas vc conseguiu melhorar a estrutura do seu sistema...

     

    pra fazer os dados não acoplados se atualizarem também, conforme vc vai navegando nos registro, insira a mesma programação no evento 'No Atual' do formulário.

    Esse evento é ativado sempre que vc troca de registro, ou gera qualquer execução no formulário que altere seu estado/situação.

    Dessa forma então, os dados não-acoplados também estarão sempre atualizados.

    Deu pra entender?

     

    faça os testes e retorne os resultados...

     

    Gostaria de pedir encarecidamente, se a dúvida pertinente ao seu tópico foi respondida com perfeição, que assinale alguma resposta como correta. ok?

     

    Abraços!

    sexta-feira, 7 de setembro de 2007 04:37