Ir para conteúdo

POWERED BY:

Arquivado

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

Almassy

Como achar cadastros...

Recommended Posts

Amigos, sou marinheiro de primeira viajem e estou perdidinho...Estou montando um BD, para um congresso, e eu gostaria de filtrar o CPF do participante e receber algumas informações dele, como saber se já está quitado, ou se recebeu as apostilas, etc.Por Exemplo: Eu digito o CPF num formulário e tenho a informação do nome completo, se está quitado, se já recebeu a pasta, se vai ao passeio...E assim por diante.....Se for me indicar um VB, favor dar o caminho completo e como chego lá, ok?Grato.Alexandre

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Almassy:Ao invés de utilizar uma caixa de texto para a digitação do critério, para só então executar uma consulta que pode não retornar nenhum registro, seja porque realmente o congressista não encontra-se cadastrado, ou mesmo por um erro de digitação do usuário, que tal susbstituir aquele componente por uma caixa de combinação que exiba todos os CPFs existentes na tabela? Aí basta selecionar um CPF, sem necessidade de digita-lo. Se forem muitos, defina a propriedade da caixa de combinação como "AutoExpandir" e o usuário necessitará digitar apenas os primeiros caracteres, que o componente se encarregará de filtrar os resultados. Experimente criar uma consulta que retorne todos os congressistas cadastrados. A sintaxe em SQL seria algo assim (se quiser, utilize o "Assistente de Consulta" do Access):SELECT * FROM NomeDaSuaTabelaDeCongressitasExecute a consulta e perceba que todos os campos, inclusive os que aparentemente não teriam necessidade, são exibidos. Insira uma caixa de combinação em seu formulário; e altere/especifique as seguintes propriedades da combo:Origem da linha = NomeDaConsultaAcimaNúmero de colunas = igual ao número de colunas retornados pela consultaLargura das colunas = de modo a deixar visível somente a do CPF, ocultando as demais (supondo que fosse a 4ª, ficaria assim: 0;0;0;2;0;0)Limitar a uma lista = "Sim"AutoExpandir = "Sim"Como você deseja exibir os dados pessoais do congressista selecionado em outros componentes do formulário (como caixas de texto), a partir da seleção do CPF da caixa de combinação, entre no editor do VBA e, no evento AfterUpdate da caixa de combinação, no espaço entre as linhas "Private Sub..." e "End Sub", insira o código abaixo:Dim intLinha As IntegerintLinha = NomeDaSuaCaixaDeCombinacao.ListIndexSuaCaixaDeTextoNome = NomeDaSuaCaixaDeCombinacao.Column(1, intLinha)SuaCaixaDeDataDeNascimento = NomeDaSuaCaixaDeCombinacao.Column(2, intLinha)etc.Fazendo uso da propriedade Column, ao selecionar qualquer um dos CPFs já cadastrados, você preencherá automaticamente os demais componentes. Detalhe: a contagem das colunas da caixa de combinação inicia-se a partir do 0.Com poucas modificações você pode adaptar o código de modo a atender às suas necessidades.Espero que isso ajude.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo.....Quem sabe, sabe. O resto é resto.Brincadeira.Da maneira que me explicou, até meu filho de 9 anos resolve este problema.Muito obrigado pela ajuda. Tirou um piano de minhas costas.Parabéns pela didática.Para fechar com chave de Ouro, será que você saberia me ensinanar a somar as pessoas dos estados?Tipo imprimir um relatório com RJ = X; SP = Y; DF = 0; etc...Para eu saber quantas pessoas tem de cada lugar.Se puder, fico lisonjeado.Se não, já valeu MUITO a sua ajuda.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Almassy:Eu é que fiquei lisonjeado. Não precisava tantos elogios (hehehe). Muito obrigado.Com relação à sua outra indagação, peço um pouco mais de paciência porque a solução envolve um nível maior de complexidade e de testes, pois serei obrigado a simular o ambiente proposto para verificar os resultados. Tentarei responder dentro de 2 dias.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Almassy:A solução abaixo foi apresentada em seu post original, e estou reproduzindo aqui:Vamos considerar que sua tabela de congressistas disponha de um campo do tipo texto, utilizado para identificar a Unidade da Federação (Estado) de origem dos mesmos (como deve ser o seu caso). Desconheço quantas pessoas costumam participar desses eventos, mas creio ser improvável que consiga reunir representantes de absolutamente todos os Estados do país e, mesmo que isso ocorra, alguns congressos podem resultar em ausências de uma ou mais Unidades. Logo, devemos identificar quais Estados estão realmente participando do evento. Contaremos com o auxílio de uma consulta (que chamarei de qryEstados) que reúna somente as unidades participantes, descartando as repetições. Sua sintaxe seria:SELECT DISTINCT [uF] FROM tblCongressistasAo mesmo tempo, precisaremos de uma tabela auxiliar (que chamarei de tblEstados) que contenha todos os 26 Estados brasileiros mais o Distrito Federal, e também um campo numérico (que chamarei de Quantidade), o qual receberá o número de congressistas de acordo com a UF (posteriormente, declare essa tabela como origem de seu relatório). A estrutura da tabela poderia ser:UF (campo Texto, declarado como chave primária)Quantidade (campo Inteiro ou Inteiro Longo)Agora, no evento OnClick do botão de comando que mencionou, insira o código abaixo (os apóstrofes indicam comentários e podem ser mantidos):' declaração das variáveis que serão utilizadasDim db As DatabaseDim rst1 As RecordsetDim rst2 As RecordsetDim intEstados As IntegerDim i As IntegerDim intTotal As IntegerDim strUF As String' indicação que o BD utilizado será o atualSet db = CurrentDb' aponta-se para a qryEstadosSet rst1 = db.OpenRecordset("qryEstados")' aponta-se a tblEstadosSet rst2 = db.OpenRecordset("tblEstados")' obtém-se a quantidade de Estados participantes, necessário para se definir a' quantidade de repetiçõesintEstados = DCount("*", "qryEstados")' a tabela tblEstados recebe valor zero em todos os registros do campo Quantidade, do contrário,' cada vez que o botão de comando for pressionado, algum Estado presente na última atualização' e sem nenhum representante no momento atual, permanecerá com seu valor anterior,' retornando informações incorretasdb.Execute "UPDATE tblEstados SET Quantidade = 0"' o ponteiro é movido para o primeiro registro da consulta qryEstadosrst1.MoveFirst' a estrutura abaixo repetirá o código numa quantidade igual ao de Estados encontrados' em qryEstadosFor i = 0 To intEstados - 1' a variável strUF recebe o valor do primeiro campo (UF) de qryEstados; lembre-se que' a contagem das colunas inicia-se em zerostrUF = rst1.Fields(0)' obtém-se a quantidade de Estados participantes na tabela tblCongressistasintTotal = DCount("[uF]", "tblCongressistas", "[uF] = '" & strUF & "'")' uma mensagem (opcional) permite o acompanhamento da contagemMsgBox "Há " & intTotal & " município(s) do Estado de " & strUF' o índice é encontrado de acordo com o valor de strUF e faz a edição do campo' Quantidade para cada registro, fazendo-o receber o valor da variável intTotalWith rst2.Index = "UF".Seek "=", strUF.Edit!Quantidade = intTotal.UpdateEnd With' move-se para o próximo registro de qryEstadosrst1.MoveNext' repete-se todo o processo numa quantidade de vezes igual ao de Estados encontrados' em qryEstadosNext' a memória é liberadarst1.Closerst2.Closedb.CloseSet db = NothingEnd SubPara "incrementar" ainda mais seu relatório, você pode fazer com ele seja baseado numa consulta, que terá como origem a tabela tblEstados, visto que ela possibilita ordernar os resultados alfabeticamente. A sintaxe poderia ser:SELECT * FROM tblEstados WHERE Quantidade <> 0 ORDER BY UFAcho que é isso.Espero ter ajudado.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.