Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Philé

Barra de Rolagem

Recommended Posts

Pessoal, por favor...Tenho uma tabela de clientes e outra de contatos de cada cliente. Num formulário eu preciso incluir o cliente através de barra de rolagem e - essa é a parte difícil - na outra barra de rolagem eu quero que apareça somente os contatos referentes ao cliente que eu selecionei na primeira barra e não todos os contatos existentes na tabela.Se houver possibilidade eu agradeço a quem possa ter um tempo pra me auxiliar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Philé:Você fala de "barras de rolagem", mas deve estar se referindo a caixas de combinação, ou combo boxes.Para fazer o que pretende, recomendo que a tabela clientes possua um campo do tipo autonumeração, que gerará uma seqüência automática única (código) que o identificará cada cliente no cadastro. Já na tabela contatos, deverá existir um campo numérico (mas não autonumeração), do tipo inteiro longo, cujo conteúdo deverá ser idêntico ao campo ID da outra tabela, desde, é claro, que o contato seja, realmente, um contato do cliente. Algo assim:tblClientesID NomeDoCliente1 Volkswagen do Brasil S/A2 Victor Company Of Japan3 MSAS Cargo InternationaltblContatosCodDoCliente NomeDoContato1 Pedro da Silva1 Paulo Pedroso de Souza3 José Aparecido da Costa2 Marcelo Rodrigues3 Marisa da SilvaObserve que cada cliente pode ter mais do que um contato, por isso o código do cliente na tblContatos pode se repetir, enquanto o campo ID da tblClientes, isto é, o código que os identifica, é único. É recomendável que o os dois campos mencionados sejam ligados através de um relacionamento. Para maiores informações sobre tabelas relacionadas, consulte o arquivo de Ajuda do Access.Crie uma consulta que exiba todos os clientes, e especifique-a como "origem da linha" da caixa de combinação clientes (que chamarei de cboClientes). A combo passará a listar todos os clientes. Chamo sua atenção para um detalhe: não sei quantos campos a sua tabela Clientes possui, visto que eu a exemplifiquei com apenas 2 campos mas, não importa quantos, a facilidade do Access para exibir somente os campos necessários ao usuário é incomparável, bastando especificar a quantidade de colunas e suas respectivas larguras (em propriedades da cboClientes).Agora tente fazer o mesmo em Visual Basic, Delphi, etc...Em seguida, no evento AfterUpdate da cboClientes, insira o seguinte código:Dim db As DataBaseDim qdf As QueryDefDim intLinha As IntegerDim lngID As LongDim strSQL As StringIf IsNull(cboClientes) Then cboContatos.RowSource = "" Exit SubElse intLinha = cboClientes.ListIndex lngID = cboClientes.Column(0, intLinha) strSQL = "SELECT * FROM tblContatos WHERE CodDoCliente = " & lngID & " ORDER BY NomeDoContato" Set db = CurrentDb db.QueryDefs.Refresh For Each qdf In db.QueryDefs If qdf.Name = "qry_TempContatos" Then db.QueryDefs.Delete qdf.Name End If Next qdf Set qdf = db.CreateQueryDef("qry_TempContatos", strSQL) qdf.Close cboContatos.RowSource = "qry_TempContatos" db.CloseEnd IfEnd SubResumindo, ao ser selecionado um cliente na cboClientes, a variável lngID receberá o código do cliente e uma pesquisa dinâmica baseada em strSQL será gerada, reunindo somente os contatos do cliente selecionado, e a pesquisa em questão será a origem da linha da cboContatos, passando a listar somente os contatos necessários.Espero que isso ajude. Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.