MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Consulta por meses que um produto não vende em colunas

    avatar
    Jsd
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 27/05/2013

    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Consulta por meses que um produto não vende em colunas

    Mensagem  Jsd 27/5/2013, 02:57

    Eu possuo tabelas chamadas: Cliente, Produtos e Curva.

    Seguem os campos que me interessam:

    Na tabela Cliente:
    CodCliente..........NomeCliente
    1234......................Fulano de Tal

    Na tabela Produtos:
    CodProduto.....Descricao
    4321..................escova de dente

    Na Tabela Curva:
    CodClienteCodProdutoJaneirovalorFevereirovalorMarcovalorAbrilvalorDezembrovalorJaneiroQtdeFevereiroQtdeDezembroQtde
    12344321R$ 1.250,00 R$ 380,121.000 480
    23414512 R$ 350,25 35
    Obs.: Nesta tabela há todos os meses do ano, apenas simplifiquei. E os mesmos produtos podem se repetir em outras linhas em colunas de meses diferentes.

    A tabela Curva possui os valores faturados por determinados clientes no último ano.
    Eu gostaria de criar uma consulta que informe quantos meses faz que o cliente não compra determinado produto.
    Acredito que identificando nos meses anteriores os campos nulos até encontrar o primeiro que possua algum valor.

    Por exemplo: Em um formulário seleciono a opção de me listar todos os produtos que não são comprados nos últimos 7 meses.
    Então é identificado o mês atual e a consulta busca os produtos que estão nulos (sem vendas) nos últimos 7 meses anteriores.
    A empresa mantém os dados sempre dos últimos 12 meses.

    A consulta iria listar os seguintes campos:

    NomeCliente.....Descricao..............Periodo
    Fulano de Tal.....escova de dente...7 meses

    Não estou conseguindo nem iniciar uma consulta desta forma.
    Obs.: O formato das tabelas já existem e não posso adaptar para facilitar esta pesquisa pois a empresa já utiliza estas tabelas desta forma.

    Desde já agradeço a atenção.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 27/5/2013, 04:33

    Boas Jsd, seja bem vindo ao Fórum...

    Se os meses fossem em registros... poderiamos utilizar um recordset filtrado pelo cliente enviando o ponteiro para o último registro e retrocedendo através de um loop, checando os meses nulos.. porém está em campos... seria algo assim creio eu:

    Obs. não testei


    '=======================================================
    'Confeccionado Por PILOTO
    'Fórum Máximo Access
    'Para o usuário Jsd em 27/05/2013
    '=======================================================
    Dim rs As Dao.Database
    Dim NumCampos As Integer
    Dim Z As Integer, x As Integer
    Dim nCount As Integer

    nCount = 0
    Set rs = CurrentDb.OpenRecordset("SELECT * From SuaTabela Were Código = " & StrCodigoCliente & ";")

    rs.MoveFirst
    Do While Not rs.EOF
    'Adiciono à variável o número de campos na tabela
    NumCampos = rs.Fields.Count
    'Adiciono a esta variável o numero de campos da tabela
    x = NumCampos
    'Inicio o loop pelos campos excluindo o campo da chave primaria que é o campo 0
    For Z = 0 To (NumCampos - 1)
    'Checo se o campo é nulo observe que utilizo o valor de x para iniciar pelo último campo
    'Caso seja nulo incremento o contador em 1
    If IsNull(rs.Fields(x)) Then nCount = nCount 1
    'Aqui checo se o campo não é nulo caso positivo e o contador não estiver em 7
    'Significa que teve venda antes dos 7 meses, depois vou salto ao rótulo continuar
    'para saltar este produto
    If IsNull(rs.Fields(x)) = False And nCount < 7 Then GoTo Continuar
    'Como o loop pelos campos deve ser feito inverso vou diminuindo o valor de x a cada loop
    x = NumCampos - 1
    Next Z
    'Caso a variável nCount seja igual ou maior que 7 significa que o produto está a 7 ou mais meses sem venda
    If nCount >= 7 Then MsgBox "Este Produto está 7 meses sem vender"
    Continuar:
    'Movo o recordset para o último registro
    nCount = 0
    rs.MoveNext
    Loop



    Cumprimentos.
    avatar
    Jsd
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 27/05/2013

    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Mais um auxilio

    Mensagem  Jsd 28/5/2013, 01:32

    Muito obrigado PILOTO por me auxiliar. Acredito que é por este caminho mesmo.
    Eu adicionei/alterei algumas linhas no código que estão em vermelho, porém, ele dá o seguinte erro:
    rs.Fields(x) item não encontrado nesta coleção
    na linha:
    If IsNull(rs.Fields(x)) Then nCount = nCount + 1

    Eu testei colocando - 1 na seguinte linha:
    x = NumCampos - 1

    E ai aparece a msgbox, mas mostra para todos os produtos (inclusive o mesmo produto que foi comprado em mais de um mês).
    Não entendi bem se este código está iniciando pelo campo do mês anterior ao mês atual.
    Exemplo: estamos em maio, o código deve começar a analisar por abril, março, até maio do ano anterior.
    Você teria alguma dica?

    '=======================================================
    'Confeccionado Por PILOTO
    'Fórum Máximo Access
    'Para o usuário Jsd em 27/05/2013
    '=======================================================
    Dim db As Database
    Dim rs As Recordset

    Dim NumCampos As Integer
    Dim Z As Integer, x As Integer
    Dim nCount As Integer
    Dim StrCodigoCliente As String

    StrCodigoCliente = Forms.Form_Clientes.CaixaCliente.Value

    nCount = 0
    Set db = CurrentDb()
    Set rs = CurrentDb.OpenRecordset("SELECT Curva.CodCliente, Curva.CodProduto, Curva.Descricao, Curva.JaneiroVLR, Curva.FevereiroVLR, Curva.MarcoVLR, Curva.AbrilVLR, Curva.MaioVLR, Curva.JunhoVLR, Curva.JulhoVLR, Curva.AgostoVLR, Curva.SetembroVLR, Curva.OutubroVLR, Curva.NovembroVLR, Curva.DezembroVLR FROM Curva WHERE Curva.CodCliente = '" & StrCodigoCliente & "';")


    rs.MoveFirst
    Do While Not rs.EOF
    'Adiciono à variável o número de campos na tabela
    NumCampos = rs.Fields.Count
    'Adiciono a esta variável o numero de campos da tabela
    x = NumCampos
    'Inicio o loop pelos campos excluindo o campo da chave primaria que é o campo 0
    For Z = 0 To (NumCampos - 1)
    'Checo se o campo é nulo observe que utilizo o valor de x para iniciar pelo último campo
    'Caso seja nulo incremento o contador em 1
    If IsNull(rs.Fields(x)) Then nCount = nCount + 1
    'Aqui checo se o campo não é nulo caso positivo e o contador não estiver em 7
    'Significa que teve venda antes dos 7 meses, depois vou salto ao rótulo continuar
    'para saltar este produto
    If IsNull(rs.Fields(x)) = False And nCount < 7 Then GoTo Continuar
    'Como o loop pelos campos deve ser feito inverso vou diminuindo o valor de x a cada loop
    x = NumCampos - 1
    Next Z
    'Caso a variável nCount seja igual ou maior que 7 significa que o produto está a 7 ou mais meses sem venda
    If nCount >= 7 Then MsgBox "Este Produto está 7 meses sem vender"
    Continuar:
    'Movo o recordset para o último registro
    nCount = 0
    rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 28/5/2013, 02:46

    Amigo.. qual mensagem de erro produz?
    Pode ser referências...
    Marque a referência: Microsoft Office 12 database object

    Porque retirou 1 do valor de X?

    Oras... se a tabela tem 13 campos...

    o primeiro é a chave primária, os 12 os numeros de meses....

    O ultimo mes será o Campo de número 13... se retirar 1 ele começara por um mes a menos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 28/5/2013, 03:26

    Agora o Seguinte...

    Ao setar o Recordset, se declara CurrrentDb.OpenRecordset....
    Não precisa declarar o Db nas declarações do módulo, pois já está especificando que é o Db Corrente... em uso..

    Para fazer como fez.. veja no Set do Recordset como deverá ficar... Mas não há necessidade se utiliza o CurrentDb.

    Experimente declara o Recordser e o Database como Dao.

    Dim rs as Dao.Recordset
    Dim db as Dao.Database

    Dim db As Database
    Dim rs As Recordset

    Dim NumCampos As Integer
    Dim Z As Integer, x As Integer
    Dim nCount As Integer
    Dim StrCodigoCliente As String

    StrCodigoCliente = Forms.Form_Clientes.CaixaCliente.Value

    nCount = 0
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT Curva.CodCliente,
    Curva.CodProduto, Curva.Descricao, Curva.JaneiroVLR, Curva.FevereiroVLR,
    Curva.MarcoVLR, Curva.AbrilVLR, Curva.MaioVLR, Curva.JunhoVLR,
    Curva.JulhoVLR, Curva.AgostoVLR, Curva.SetembroVLR, Curva.OutubroVLR,
    Curva.NovembroVLR, Curva.DezembroVLR FROM Curva WHERE Curva.CodCliente =
    '" & StrCodigoCliente & "';")



    Qualquer coisa poste um exemplo para que possamos ver.

    Cumprimentos.
    avatar
    Jsd
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 27/05/2013

    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Arquivo para analise

    Mensagem  Jsd 29/5/2013, 03:26

    Prezado PILOTO, estou lhe enviando o arquivo com um exemplo do que preciso.

    Quando disponibilizar de tempo, se puder dar uma olhada para mim.

    Obs.: A minha versão do Access é a 2013, não consegui salvar em nenhuma versão anterior.

    Obrigado.
    Anexos
    [Resolvido]Consulta por meses que um produto não vende em colunas AttachmentProdutos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (46 Kb) Baixado 6 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 29/5/2013, 04:18

    Infelizmente não possuo o 2013...

    Se pudesse converter eu daria uma olhada pra ti amigão...

    Veja ai as dicas que lhe dei... caso alguma duvida tentatei na medida de meus conhecimentos..
    Se pudesse fazer um pequeno exemplo em 2007 eu poderia lhe ajudar mais.

    Boa noite.
    avatar
    Jsd
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 27/05/2013

    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Jsd 29/5/2013, 23:10

    Obrigado PILOTO pela sua atenção.

    Vou tentar com as informações que me passou, foram apropriadas e me mostraram um caminho.

    Quando conseguir irei postar para mais alguém que precise deste código.

    Só fiquei em dúvida se coloco como resolvido para fechar este tópico ou aguarda minha solução...

    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 29/5/2013, 23:34

    Penso a solução ser por esta lógica que informei... Se consegui perceber o que eu quis fazer.. será fácil uma adaptação.
    Qualquer coisa poste aqui...

    Coloque-o como resolvido, não esquecendo-se de clicar no joinha da mensagem que o auxiliou.

    Após pronta a solucão poste-a aqui mesmo.

    Cumprimentos.
    avatar
    Jsd
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 27/05/2013

    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Jsd 29/5/2013, 23:38

    Ok, obrigado pelos esclarecimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Convidado 29/5/2013, 23:45

    O Fórum agradece o Retorno.

    Conteúdo patrocinado


    [Resolvido]Consulta por meses que um produto não vende em colunas Empty Re: [Resolvido]Consulta por meses que um produto não vende em colunas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 10:45