Ir ao conteúdo

Auto Completar No Access


Timer

Posts recomendados

Postado

Olá

1. Alguém sabe como relacionar, no Access, os campos (por exemplo): Nome fantasia, Razão Social, CNPJ, Endereço de forma que exista um tipo de menu em que o usuário escolha um campo (por exemplo, razão social) e todos os outros citados acima sejam automaticamente preenchidos, sem que seja necessário digitá-los novamente)?

2. Existe alguma forma do Access separar os clientes que não compram a mais de 3 meses como um campo"não comprou" e o campo "comprou" para aqueles que realizaram compras em menos de 3 meses e isso apareça em um campo automaticamente?

Além disso, quando o cliente "não comprou", um campo “por que” seja habilitado, bem como os dados “Última Compra” sejam preenchidos.

3. Existe alguma forma do Access mover o cadastro de um clientes em prospeccão para os clientes ativos e inativos caso um campo “Efetuou pedido” seja preenchido. Bem como o dia e o mês da compra?

Grato pelo auxílio.

  • Membro VIP
Postado
Postado Originalmente por Timer@24 jun 2004, 14:26

Como relacionar, no Access, os campos (por exemplo): Nome fantasia, Razão Social, CNPJ, Endereço de forma que exista um tipo de menu em que o usuário escolha um campo (por exemplo, razão social) e todos os outros citados acima sejam automaticamente preenchidos, sem que seja necessário digitá-los novamente)?

Existe um jeito, e é relativamente fácil de fazer, porém é um pouco difícil explicar.

Como não sei a estrutura e os nomes corretos dos campos que você criou aí, então vou simular um exemplo aqui. Faça o exemplo apenas para ver como funciona, daí você aplica depois no seu banco de dados, ok?

Passo 1: Crie e salve uma nova Tabela com os seguintes campos (sendo que a sequência abaixo indica o nome, tipo de dados e tamanho de cada campo):

Nome: Id, Tipo: Autonumeração (Chave Primária)

Nome: Nome, Tipo: Texto, Tamanho: 50

Nome: Endereco, Tipo: Texto, Tamanho: 75

Nome: Cidade, Tipo: Texto, Tamanho: 35

Nome: Estado, Tipo: Texto, Tamanho: 2

Nome: Telefone, Tipo: Texto, Tamanho: 25

Depois, pode preencher com alguns dados "fictícios", só pra fazer um teste.

Passo 2: Crie um novo Formulário no modo estrutura, e não acople à nenhuma tabela, nem mesmo a tabela tabClientes criada agora. Salve esse Formulário com o nome de frmClientes.

Passo 3: Coloque nesse Form uma caixa de combinação. Dispense o assistente, se ele aparecer.

Passo 4: Nas propriedades dessa caixa de combinação, vá na guia "Outra" e nomeie essa caixa de combinação como cmbClientes. Isso você faz na propriedade Nome.

Observação: Essa nomenclatura é importante pois é por ela que vamos usar os valores que você selecionar na caixa de combinação, entre outras coisas.

Passo 5: Ainda nas propriedades dessa caixa de combinação, vá na guia "Dados". Certifique-se de que na propriedade Tipo de origem da linha esteja selecionado Tabela/Consulta. Agora, na propriedade Origem da linha, será preciso colocar uma instrução SQL que vai recuperar os valores do campo Nome em tabClientes. Eis a instrução:

Postado Originalmente por Quadro 1: instrução SQL do campo 'Nome'

SELECT DISTINCTROW Nome FROM tabClientes;

Coloque essa instrução dentro da propriedade Origem da linha, e feche a janela de propriedades da caixa de combinação.

Passo 6: Agora é hora de colocar os outros controles, que receberão os valores dos outros campos da tabela, quando você selecionar um nome na caixa de combinação cmbClientes. Coloque no Formulário exatamente QUATRO caixas de texto. Ficará uma para cada campo restante na tabela, ou seja: Endereco, Cidade, Estado e Telefone.

Passo 7: Nomeie cada uma das caixas de textos com os respectivos nomes: txtEndereco, txtCidade, txtEstado, txtTelefone. Para isso, acione a janela de propriedades de cada uma das caixas de texto, e nomeie-as individualmente.

Observação: Essa nomenclatura é importante pois é por ela que vamos colocar os valores obtidos do resultado da consulta feita após selecionar um valor na caixa de combinação.

Passo 8: Feito isso, é hora de colocar o código VBA que executará a consulta que irá preencher essas caixas de texto com os dados do cliente, baseado no que for selecionado.

Para tanto, você vai ter que abrir o Formulário no modo construtor de código: pela janela de propriedades da caixa de combinação, acione a guia "Evento" e, na propriedade "Após atualizar", selecione a opção [Procedimento do evento].

Depois, clique no botão que aparecerá do lado direito, aquele com 3 pontos ( ... ). Isso vai abrir a janela do editor do VBA, que inicialmente aparecerá com o seguinte código:

Postado Originalmente por Quadro 2: janela do VBA@ com código que aparecerá ao ser acionada

Option Compare

Database

Option Explicit

Private Sub cmbClientes_AfterUpdate()

   

End Sub

Para facilitar, simplesmente apague tudo o que estiver ali. Depois, com a janela "limpa", coloque o código à seguir:

Postado Originalmente por Quadro 3: código à ser colocado na janela do VBA

Option Compare Database

Option Explicit

Private Sub cmbClientes_AfterUpdate()

   

    Dim Banco As Database, Cliente As Recordset, Sql As String

   

    Sql = "SELECT Endereco, Cidade, Estado, Telefone " & _

          "FROM tabClientes " & _

          "WHERE Nome='" & cmbClientes.Text & "';"

   

    Set Banco = CurrentDb

    Set Cliente = Banco.OpenRecordset(Sql)

   

    If Not Cliente.RecordCount = 0 Then

        txtEndereco = IIf(IsNull(Cliente!Endereco), "", Cliente!Endereco)

        txtCidade = IIf(IsNull(Cliente!Cidade), "", Cliente!Cidade)

        txtEstado = IIf(IsNull(Cliente!Estado), "", Cliente!Estado)

        txtTelefone = IIf(IsNull(Cliente!Telefone), "", Cliente!Telefone)

    Else

        MsgBox "Não existem dados para o cliente selecionado.", vbExclamation, "Erro"

    End If

   

    Set Banco = Nothing   

    Set Cliente = Nothing 

End Sub

Passo 9: Agora, salve o trabalho e abra o Formulário para testar. Depois você arruma os campos do seu jeito.

Observação: Montei esse exemplo no Access 97, mas não deve ser diferente em versões posteriores.

...

Postado Originalmente por Timer@24 jun 2004, 14:26

Existe alguma forma do Access separar os clientes que não compram a mais de 3 meses como  um campo"não comprou" e o campo "comprou" para aqueles que realizaram compras em menos de 3 meses e isso apareça em um campo automaticamente?

Seria mais fácil colocar um campo "DataUltimaCompra", por exemplo, onde à cada compra desse cliente você gravaria a data. Depois seria só fazer uma consulta em cima dessa data. Por exemplo, naquela tabela que criamos no exemplo anterior, coloque um campo tipo Data/Hora, chamado DataUltimaCompra. Crie uma consulta em modo SQL, colocando a seguinte instrução:

Postado Originalmente por Quadro 4: exemplo de consulta com data

Existe alguma forma do Access mover o cadastro de um clientes em prospeccão para os clientes ativos e inativos caso um campo “Efetuou pedido” seja preenchido. Bem como o dia e o mês da compra?

Não entendi muito bem, mas tecnicamente você pode mover ou copiar dados de qualquer origem para qualquer destino, baseado em qualquer parâmetro. Mas eu acharia mais fácil você criar um campo do tipo "Sim/Não", por exemplo, com o nome "Inativo", e alterar para Sim ou Não conforme mudar esse "status" do cliente.

Qualquer dúvida estamos aí.

  • 3 anos depois...
Postado

Olá Clemente,

Desde já agradeço pela enorme ajuda que esta passando para nos leigos em Access..

Amigo.. seguir todos os seus procedimentos, mais mesmo assim ele indentificou um erro, gostaria que me orienta-se como solucionar o mesmo.

O erro e o seguinte:

"Parâmetros insuficientes. Eram esperados <número>. (Erro 3061)

Esta consulta parâmetro requer o número especificado de parâmetros, que você não forneceu. Forneça o número esperado de parâmetros e execute a consulta novamente.

Em alguns casos, esta mensagem é gerada quando expressões ou nomes de campo desconhecidos são interpretados como parâmetros de consulta. Certifique-se de colocar entre colchetes [ ] os nomes de campo que contêm espaços ou sinais de pontuação.

"

Desde ja agadeço.

Kelver Macedo de Araujo

------------------

Existe um jeito, e é relativamente fácil de fazer, porém é um pouco difícil explicar.

Como não sei a estrutura e os nomes corretos dos campos que você criou aí, então vou simular um exemplo aqui. Faça o exemplo apenas para ver como funciona, daí você aplica depois no seu banco de dados, ok?

Passo 1: Crie e salve uma nova Tabela com os seguintes campos (sendo que a sequência abaixo indica o nome, tipo de dados e tamanho de cada campo):

Nome: Id, Tipo: Autonumeração (Chave Primária)

Nome: Nome, Tipo: Texto, Tamanho: 50

Nome: Endereco, Tipo: Texto, Tamanho: 75

Nome: Cidade, Tipo: Texto, Tamanho: 35

Nome: Estado, Tipo: Texto, Tamanho: 2

Nome: Telefone, Tipo: Texto, Tamanho: 25

Depois, pode preencher com alguns dados "fictícios", só pra fazer um teste.

Passo 2: Crie um novo Formulário no modo estrutura, e não acople à nenhuma tabela, nem mesmo a tabela tabClientes criada agora. Salve esse Formulário com o nome de frmClientes.

Passo 3: Coloque nesse Form uma caixa de combinação. Dispense o assistente, se ele aparecer.

Passo 4: Nas propriedades dessa caixa de combinação, vá na guia "Outra" e nomeie essa caixa de combinação como cmbClientes. Isso você faz na propriedade Nome.

Observação: Essa nomenclatura é importante pois é por ela que vamos usar os valores que você selecionar na caixa de combinação, entre outras coisas.

Passo 5: Ainda nas propriedades dessa caixa de combinação, vá na guia "Dados". Certifique-se de que na propriedade Tipo de origem da linha esteja selecionado Tabela/Consulta. Agora, na propriedade Origem da linha, será preciso colocar uma instrução SQL que vai recuperar os valores do campo Nome em tabClientes. Eis a instrução:

Coloque essa instrução dentro da propriedade Origem da linha, e feche a janela de propriedades da caixa de combinação.

Passo 6: Agora é hora de colocar os outros controles, que receberão os valores dos outros campos da tabela, quando você selecionar um nome na caixa de combinação cmbClientes. Coloque no Formulário exatamente QUATRO caixas de texto. Ficará uma para cada campo restante na tabela, ou seja: Endereco, Cidade, Estado e Telefone.

Passo 7: Nomeie cada uma das caixas de textos com os respectivos nomes: txtEndereco, txtCidade, txtEstado, txtTelefone. Para isso, acione a janela de propriedades de cada uma das caixas de texto, e nomeie-as individualmente.

Observação: Essa nomenclatura é importante pois é por ela que vamos colocar os valores obtidos do resultado da consulta feita após selecionar um valor na caixa de combinação.

Passo 8: Feito isso, é hora de colocar o código VBA que executará a consulta que irá preencher essas caixas de texto com os dados do cliente, baseado no que for selecionado.

Para tanto, você vai ter que abrir o Formulário no modo construtor de código: pela janela de propriedades da caixa de combinação, acione a guia "Evento" e, na propriedade "Após atualizar", selecione a opção [Procedimento do evento].

Depois, clique no botão que aparecerá do lado direito, aquele com 3 pontos ( ... ). Isso vai abrir a janela do editor do VBA, que inicialmente aparecerá com o seguinte código:

Para facilitar, simplesmente apague tudo o que estiver ali. Depois, com a janela "limpa", coloque o código à seguir:

Passo 9: Agora, salve o trabalho e abra o Formulário para testar. Depois você arruma os campos do seu jeito.

Observação: Montei esse exemplo no Access 97, mas não deve ser diferente em versões posteriores.

...

Seria mais fácil colocar um campo "DataUltimaCompra", por exemplo, onde à cada compra desse cliente você gravaria a data. Depois seria só fazer uma consulta em cima dessa data. Por exemplo, naquela tabela que criamos no exemplo anterior, coloque um campo tipo Data/Hora, chamado DataUltimaCompra. Crie uma consulta em modo SQL, colocando a seguinte instrução:

Não entendi muito bem, mas tecnicamente você pode mover ou copiar dados de qualquer origem para qualquer destino, baseado em qualquer parâmetro. Mas eu acharia mais fácil você criar um campo do tipo "Sim/Não", por exemplo, com o nome "Inativo", e alterar para Sim ou Não conforme mudar esse "status" do cliente.

Qualquer dúvida estamos aí.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!