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


2 participantes

    [Resolvido]Consulta Access Vba DlookUp e DSum

    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Consulta Access Vba DlookUp e DSum

    Mensagem  isaias_sc 23/7/2012, 02:25

    Olá,

    Preciso de ajuda, Veja a (consulta3)

    A coluna (%Part) traz o percentual do número de viagens de cada vendedor em relação ao total de viagens.

    A coluna (Valor_venda) faz uma busca na (consulta2) do valor total das vendas, com base no Ano e Mês da (Consulta3) e divide pelo número de viagens de cada vendedor.


    Tentei criar duas funções em vba para melhor desenpenho do banco em rede, porem não obtive o mesmo resultado.

    Valor_Venda: fncValorVendas()/[NºViagens]

    %Part: [NºViagens]/fncTotalSoma()

    *******************************************************************************************
    Dim ValorVendas As Double
    Dim TotalSoma As Double

    Public Function fncValorVendas() As Double
    If ValorVendas = 0 Then ValorVendas = DLookup("Valor_Vendas", "Consulta2", "[Mês] = " & Mês & " AND [Ano] = " & Ano)
    fncValorVendas = ValorVendas
    End Function

    Public Function fncTotalSoma() As Double
    If TotalSoma = 0 Then TotalSoma = DSum("[NºViagens]", "consulta3")
    fncTotalSoma = TotalSoma
    End Function

    *******************************************************************************************

    Se possivel, dê uma olhada no banco em anexo... E diga o que está errado nas funções do mudulo1.

    Desde de já agradeço.
    Anexos
    [Resolvido]Consulta Access Vba DlookUp e DSum AttachmentTeste_graficos_r1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (57 Kb) Baixado 40 vez(es)


    Última edição por isaias_sc em 24/7/2012, 02:18, editado 1 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 23/7/2012, 15:10

    Bom dia Isaias, seja bem vindo ao fórum!

    O Banco não está em anexo, reanexe por gentileza para que possamos ver.

    Cumprimentos.
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  isaias_sc 24/7/2012, 02:21

    Segue em anexo.
    Anexos
    [Resolvido]Consulta Access Vba DlookUp e DSum AttachmentTeste_graficos_r1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (57 Kb) Baixado 33 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 24/7/2012, 05:10

    Boas Isaias.

    De detalhes com relação a sua tabela.

    Talvez nem se precise de tantas consulta.

    Tabela Campos:
    - Vendedor
    - Data_Venda
    - Valor


    Qual o parametro para:

    NumeroViagens? o que relaciona o valor com o numero de viagens?


    Especifique quais informações deseja e quais critério segundo os campos da tabela.

    Talvez ate se possa fazer todas em VBA.



    Cumprimentos.
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  isaias_sc 25/7/2012, 03:51

    Olá boa noite!

    Vou anexar um banco exemplo que retrata melhor minha necessidade.

    No banco existe duas tabelas, duas consultas e um módulo onde desejo crias duas funções VBA.

    Tabela (Custos_Operacionais) armazena as informações de despesas.
    Tabela (DadosViagens) armazena dados de viagens e seus valores transportados.

    Consulta (Cons_Custo_Oper) soma o valor dos custos por ano e mês.
    Consulta (Analise_Viagens) traz Rota, NºViagens e Valor Transportado, nesta mesma consulta criei duas colunas. São elas:

    [%Part] e [Custo_Operacional] cada uma das colunas existem uma expressão que traz um resultado.

    Expressões:
    Coluna %Part: [NºViagens]/DSoma("[NºViagens]";"Analise_Viagens")
    Coluna Custo_Operacional: DPesquisa("Custo_Operacional";"Cons_Custo_Oper";"Mês = " & [Mês] & " AND Ano = " & [Ano])*[%Part]

    O que eu desejo é substituir as expressões usadas por funções VBA que serão chamadas na consulta. Exemplo:
    Coluna %Part: [NºViagens]/fncTotalViagens()
    Coluna Custo_Operacional: fncCustoOperacional()*[%Part]

    Usei o código abaixo para criar as funções... Deu erro!

    ********************************************************
    Option Compare Database
    Option Explicit

    Dim CustoOperacional As Double
    Dim TotalViagens As Double

    Public Function fncCustoOperacional() As Double
    If CustoOperacional = 0 Then CustoOperacional = DLookup("Custo_Operacional", "Cons_Custo_Oper", "[Mês] = " & Mês & " AND [Ano] = " & Ano)
    fncCustoOperacional = CustoOperacional
    End Function

    Public Function fncTotalViagens() As Double
    If TotalViagens = 0 Then TotalViagens = DSum("[NºViagens]", "Analise_Viagens")
    fncTotalViagens = TotalViagens
    End Function
    ********************************************************

    Preciso criar as funções em VBA para melhorar o desenpenho do banco em rede.

    Também preciso colocar um parametro na consulta (Analise_Viagens) nas colunas Ano e Mês, Exemplo:

    Criterio coluna Ano = Como '*'+[Informe o Ano no formato XXXX (* Para todos):]+'*'

    Criterio coluna Mês = Como '*'+[Informe o mês (Ex 1=Jan 2=Fev) Ou (* Para todos):]+'*'

    Ao colocar os criterios acima nas colunas citadas da erro.

    ********************************************************

    Em anexo, segue o banco... Tente colocar os parametros na consulta (Analise_Viagens) e tambem substituir as expressão por funções criadas em VBA.

    Desde de já agradeço.

    Um forte abraço.
    Anexos
    [Resolvido]Consulta Access Vba DlookUp e DSum AttachmentBD_Exemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (48 Kb) Baixado 43 vez(es)
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Avelino Sampaio 25/7/2012, 11:21

    Me surpreendeu sua solicitação aqui, já que a resposta se encontra no relatório do seu primeiro arquivo anexo.

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 12:41

    Não cheguei a perceber isto Mestre Avelino... Vou la Ver... rsrs


    CUmprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 12:54

    Pelo que eu entendi Avelino ele pretende na consulta grafica substituir a soma conseguida através so Dsum por uma função

    De: Coluna %Part: [NºViagens]/DSoma("[NºViagens]";"Analise_Viagens")

    PAra: Coluna %Part: [NºViagens]/fncTotalViagens()

    E realmente... a resposta para esta função está no relatório...

    Basta uma pequena adaptação.... estou certo Avelino?


    Private Function fncValorVendas(mes As Integer, Ano As Integer)
    Dim j As String, a%, v
    For a = 0 To Me!TotalRegistros - 1
    If InStr(valorVendas(a), Ano & mes) > 0 Then
    v = Split(valorVendas(a), "|")
    fncValorVendas = v(1)
    Exit Function
    End If
    Next a
    valorVendas(k) = DLookup("[ano] & [mês] & '|' & [Valor_Vendas]", "Consulta2", "Mês = " & mes & " AND [Ano] = " & Ano)
    v = Split(valorVendas(k), "|")
    fncValorVendas = v(1)
    k = k + 1
    End Function
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Avelino Sampaio 25/7/2012, 13:18

    Não tem que adaptar nada pois seu objetivo final é apresentar um relatório. Bom, foi isso que ele havia me dito.

    A programação direto no relatório é o melhor caminho para se obter um melhor desempenho.

    Sucesso!



    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 13:38

    Está falando a Voz da experiência....

    Abraços Avelino.


    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 14:24

    Bem... somente a título de informação... eu tentei fazer o que ele pretendia...

    consegui da seguinte forma

    TotalVendas: fncValorVendas(Ano([Data_Venda]);Mês([Data_Venda]))/[NºViagens]

    No módulo:

    Dim v
    k = DLookup("[ano] & [mês] & '|' & [Valor_Vendas]", "Consulta2", "Mês = " & Mes & " AND [Ano] = " & Ano)
    v = Split(k, "|")
    fncValorVendas = v(1)
    End Function


    Porém... quando abre a consulta ela pede o valor do parametro N°Viagens....
    clicando em Ok ela abre a consulta com os valores corretos..

    Eu creio que a função é executada antes da contagem do campo N°Viagens, por isso dá o erro na expresão.. mas ao ir adiquirindo a contagem.. ela vai corrigindo..


    Bem... so a título de informação mesmo.


    Abraços.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Avelino Sampaio 25/7/2012, 14:44

    Amigo Hary, este é até um tema bem interessante!

    Veja que o amigo Isaias tem a solução, usando as funções Dlookup() e Dsoma() mas ele está ciente de que esta consulta, usando as funções repetidas vezes, trará prejuizo no desempenho em REDE.

    Observe que não adianta vc chamar a função Dlookup() toda vez que acionar a função fncValorVendas(). No fundo não adianta nada.

    A técnica usada no relatório foi armazenar os valores numa variável.
    É verificado se a variavel possui o valor já armazenado, para então ser entregue a função fncValorVendas (isso evita que seja dado viagens a tabela, pela função dlookup )
    Caso não esteja armazenado na variável, fará então um consulta a tabela com o dlookup

    Comento um pouco sobre desempenho neste tópico:

    http://comunidade.itlab.com.br/eve/forums/a/tpc/f/273606921/m/7027019653/p/2

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 15:06

    Estás coberto de razão Avelino... para este caso, a função na consulta como ele pretende é menos viável e eficaz...

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 25/7/2012, 17:49

    Boas Mestre Avelino, estive a ler o tópico na comunidade.itlab...

    Ótima abordagem... realmente estive a perceber agora o que siginifica realmente a programação diretamente em relatórios.
    Começarei a praticar mais esta forma de programação.

    Com relação a sua sugestão de concatenação de campos no Dlookup e depois a separação com o split, foi uma avanço significativo em aplicativos que estou a desenvolver. E em ajudas no fórum tenho disseminado esta forma para soluções em mais de um campo...

    São soluções mais eficientes.

    Preciso agora aprimorar mais na questão dos relatórios.

    A questão que colocou no itlab sobre Saldos... confesso que me interessou muito, pois utilizo em meus forms e relatorios uma consulta para cálculo de saldos...

    Agora, para saldos em um form, utilizando uma listbox... ainda tem que ser atraves da consulta?
    Porque em relatorios, utilizando a sistematica que falaste, o melhor e programá-lo linha a linha no relatório...

    Quando tiver um tempo de uma olhada neste exemplo, e se possível de um parecer sobre isto.
    Com relação ao saldo.

    http://maximoaccess.forumeiros.com/t2261-controle-caixa-atualizado-com-utilizacao-de-treeview-inclusao-de-grupos-e-sub-grupos-e-pesquisa-em-na-tree


    Cumprimentos.
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido] : Consulta Access Vba DlookUp e DSum

    Mensagem  isaias_sc 25/7/2012, 18:10

    Olá Avelino,

    Realmente a melhor solução será através de programação direto no relatório como você mesmo me mandou no exemplo.
    O fato é que havia pedido ajuda aqui no fórum também. E quando o nosso amigo Piloto
    Mostrou interesse pelo assunto solicitando mais detalhes sobre minha consulta,
    Resolvi passar mais detalhadamente informações sobre minha consulta achando eu que,
    poderia haver ainda uma solução através da criação de uma função mais simples em VBA.

    Pois meu conhecimento em VBA ainda é muito pouco e tive certa dificuldade em programar meu relatório com base no exemplo que você me passou. O que não significa que seu exemplo esteja errado é claro!

    Por isso espero que você disponibilize o quanto antes o curso de VBA em seu Site. rsrsr

    Aproveito para agradecer de coração aos grandes amigos que me ajudaram com essa dúvida.

    Muito obrigado!
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Consulta Access Vba DlookUp e DSum Empty [Resolvido] Consulta Access Vba DlookUp e DSum

    Mensagem  isaias_sc 26/7/2012, 21:37

    Avelino,

    Realmente você tem razão, consegui adaptar o exemplo ao meu projeto... O relatório atendeu minha necessidade o rendimento em rede é ótimo.

    Muito obrigado mesmo!!

    A pesar de ter adaptado o exemplo ao meu projeto, confesso que não entendi muito bem as linhas de código da função abaixo:

    Private Function fncValorVendas(mes As Integer, Ano As Integer)
    Dim j As String, a%, v
    For a = 0 To Me!TotalRegistros - 1
    If InStr(valorVendas(a), Ano & mes) > 0 Then
    v = Split(valorVendas(a), "|")
    fncValorVendas = v(1)
    Exit Function
    End If
    Next a
    valorVendas(k) = DLookup("[ano] & [mês] & '|' & [Valor_Vendas]", "Consulta2", "Mês = " & mes & " AND [Ano] = " & Ano)
    v = Split(valorVendas(k), "|")
    fncValorVendas = v(1)
    k = k + 1
    End Function


    Será que você poderia comentar apenas essa função ?
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Convidado 2/8/2012, 17:56

    Bem este tópico está resolvido, aguardemos o Amigo Avelino para que possa, caso possível, comentar a função para ti.


    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Consulta Access Vba DlookUp e DSum Empty Re: [Resolvido]Consulta Access Vba DlookUp e DSum

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 03:05