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]Ajuda com dias

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Ajuda com dias

    Mensagem  l_marcce 25/9/2012, 22:10

    Olá, pessoal
    Tive um problema sério: tive que importar todo o meu programa para uma versão .mdb (access 2003) e com isso, uma das coisas mais fáceis de fazer no 2010, que foi uma simples contagem de dias (TotalDias = data_saida - data_entrada) não funciona no access antigo...
    Já tentei:
    http://maximoaccess.forumeiros.com/t1668-resolvidointervalo-entre-datas?highlight=intervalo+de+dias

    Tentei também (apenas usando como exemplo, substituindo os campos)
    http://maximoaccess.forumeiros.com/t451-resolvidoscaculo-de-data-datas-e-hora-horas-de-dias-uteis-util?highlight=intervalo+de+dias
    (esta até funciona em uma consulta, mas não consegui fazer o total ser armazenado na tabela)

    Quem Poderá me ajudar??? (Chapolim colorado.... Very Happy Sad )
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 25/9/2012, 23:45

    Mas por que armazenar o total na tabela? Não se armazena cálculos em tabela. Você tem os dados à disposição para fazer o cálculo sempre que necessitar visualizá-lo em um formulário ou relatório. Basta fazer o cálculo no momento da visualização, poupando um bom espaço no seu banco de dados.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 26/9/2012, 00:03

    É que o resultado da conta dos dias multiplica o valor de cada hóspede...
    E no código é buscado o valor no campo TotalDias para fazer a multiplicação...

    E estou até tentando usar o DateDiff em um outro bd... usando o exemplo do Vieira... mas só retorna zeros... quando não retorna nada... Crying or Very sad

    Rs... esse negócio de aprender sozinho tá acabando com o resto dos meus cabelos.... rs...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 26/9/2012, 00:11

    Se você tem as datas e o valor que multiplica, pode ainda fazer os cálculos sem precisar armazená-los. Basta para isso buscá-los na tabela. Tudo que se armazena na tabela ocupa espaço. Quanto mais coisa você armazenar, mais rápido chegará ao limite de 2 giga que o Access suporta.

    Como está tentando fazer esse cálculo? Ele pode ser feito na origem do campo:

    =DateDiff("m";[CampoDataInicial];[CampoDataFinal])


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 26/9/2012, 00:19

    Entendi o lance de armazenamento...

    Quando vc diz "origem do campo" está se referindo a "fonte do controle", dentro do formulário??? Ou é na consulta de onde vem o formulário???
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 26/9/2012, 00:24

    Tanto faz. O esquema é o mesmo.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 26/9/2012, 00:36

    Vou te passar o que tá acontecendo prá vc ver o que que tá pegando:

    Tenho os dois campos: data_entrada e data_saida (alimentados pelo usuário)
    Tenho um campo TotalDias que, no 2010 é só fazer um campo menos o outro que funciona direitinho...
    Já no .mdb, não tem essa função automatizada...
    Então coloquei no evento lostfocus do campo data_saida:

    TotalDias=DateDiff("d",data_saida,data_entrada)

    Para que apareça o resultado no campo TotalDias...
    Só que não aparece...

    Aí, tentei fazer na consulta TotalDias:[data_saida]-[data_entrada]
    Na execução da consulta, aparece o resultado belezinha... mas no campo no formulário, não aparece...

    Como eu disse... tá caindo já os cabelos das costas de tanto pensar e esquentar a cabeça... Smile

    E obrigado por ajuda JP... vc é o cara...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 26/9/2012, 00:40

    Tente na origem do campo:

    =DateDiff("d";data_saida;data_entrada)

    Em consultas e campos de formulários, use ponto e vírgula no lugar da vírgula.

    E procure não colocar nomes de campos e outros elementos com espaços. Isso causa muitos problemas em determinadas situações.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 26/9/2012, 00:52

    Deu certo, criquio...
    O formulário que estou usando vem de uma instrução SQL...
    Eu estava fazendo a inserção do TotalDias:[data_saida]-[data_entrada] na consulta... por isso não aparecia no form...
    Agora, só falta fazer a multiplicação do resultado pela quantidade de dias de cada hóspede...

    Só que cada hóspede vem de uma consulta diferente...
    Eu tinha colocado, no VB a multiplicação:

    SubTotal = Form_Hóspedes_Subformulário.diaria * Form_Reserva.TotalDias

    Só que agora não tá fazendo o cálculo...
    Lá vou eu quebrar a cabeça de novo... rs...
    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 27/9/2012, 02:46

    Ninguém merece!!!!

    DEpois de tudo pronto, o usuário me fala que será necessário fazer com que o programinha calcule meios dias, para cada hóspede...
    É mole???

    Preciso de novo da ajuda dos amigos...
    Agora, na reserva, me foi falado que os hóspedes entram sempre as 13:00, e saem, após os dias de hospedagem, sempre as 9:00
    Ou seja... o primeiro dia de locação, é sempre cobrado como meio dia...
    Dessa forma, tenho que estudar uma forma de efetuar a cobrança de cada hóspede lembrando que, para cada um, a primeira diária é apenas a metade...
    Pior!!! Agora me passou pela cabeça a possibilidade do último dia não ser cobrado, já que os hóspedes tem que sair até as 9:00 do dia marcado para entrega das chaves...
    Como eu disse... ninguém merece... rs...
    Mas como isso ainda não foi discutido, gostaria que os amigos, se possível, pudessem me explicar como cobrar meia diária de cada hóspede dentro do programa que estou elaborando...
    Desde já, um forte abraço e meu muitíssimo obrigado, já adiantado...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 27/9/2012, 04:06

    Talvez seja só diminuir um dia e aumentar o valor de meio:

    = (DateDiff("d";[DataInicial];[DataFinal]) - 1) * ValorDiária + (ValorDiária / 2)

    É só o caminho para você ver se adapta.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 27/9/2012, 13:18

    Bom dia, parceiro criquio...
    Mais uma vez, vc salvando a pátria... rs...
    Vamos lá...
    O que vc passou, em teste num outro banco de dados, onde não contem o valor diária, funcionou belezinha na contagem dos dias (até o menos 1...
    O estranho foi que, o próprio access substituiu o DateDiff por DifData, sozinho...
    Já no banco de dados do programa, ainda não consegui fazer rodar, porque o total de dias vem de outra tabela (reserva)
    Então, eu coloquei assim:
    = (DateDiff("d";[Reserva.DataInicial];[Reserva.DataFinal]) - 1) * diaria + (diaria / 2)
    E deu #nome

    Aí, eu tentei colocar no gotfocus a mesma coisa, e apareceu:
    Erro em tempo de execução '2465':
    O access não pode localizar o campo "|" referido em sua expressão...

    Pelo que eu entendi, é a referência a outra tabela (reserva) que está errado, não é???
    AH!!! Outra coisa: No cálculo de dias, no form Reserva acontecia o seguinte:
    Exemplo: alimenta-se o BD com o dia 11(entrada) e dia 14(saída). O cálculo apresenta 3 dias. Seria o certo, se não fosse ter que contar os dias 11, 12, 13 e 14 (4 dias). Claro que agora que eles me disseram que o primeiro dia tem que contar apenas meio dia, porque o hóspede só entra as 13:00 horas.
    Na realidade eu achei isso, por um lado certo, já que ele entra na metade do dia, mas por outro uma sacanagem, visto que ele tem até as 9:00 da manhã para sair na data de saida...
    Em termo de horas, seriam um total de 69 horas, e não 72 horas...
    Mas, como não sou eu quem vai se hospedar lá... rs...
    Mais uma vez, obrigado pela sua valiosa ajuda...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  criquio 27/9/2012, 13:51

    Você pode usar o DLookup para buscar os dados na tabela, utilizando a chave primária da reserva:

    Código:
    = (DateDiff("d";DLookup("DataInicial";"Reserva";"Código=" & [Código]);DLookup("DataFinal";"Reserva";"Código=" & [Código])) - 1) * diaria + (diaria / 2)

    Nesse caso, Código seria o campo chave primária da tabela Reserva e [Código] seria o campo do formulário que tem o código da reserva.

    A mudança de nomes de DateDiff para DifData é porque o Access está em português e quando inserimos uma expressão na origem do campo ou em uma consulta, ele converte automaticamente para o nosso idioma. Vai acontecer o mesmo com o DLookup que vai virar DPesquisa. É bom se acostumar a utilizar o formato inglês porque se o Access estiver em outro idioma, ele converte automaticamente. Já o mesmo não acontece se o Access for em inglês e colocar a expressão no formato do português.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 2/10/2012, 11:49

    Olá, amigos...
    Desculpem a demora em responder, mas é que não apenas desenvolvo coisas de computador...
    Tenho também um trabalho voltado a publicidade (se quiserem entrar: www.visaoexpressa.com.br), estou fazendo minha casa (rs... virei pedreiro, também... rs...)
    Bom... vamos lá:
    Os códigos funcionaram perfeitamente em um banco de dados novo, criado apenas para teste. São eles:
    Para o campo calculado TotalDias:
    =DifData("d";[Data_Entrada];[Data_Saida])

    Para o campo calculado subtotal:
    =([TotalDias]*[ValorDiária])+([ValorDiária]/2)

    Porém, meu problema está sendo implementar esses código no BD original. Nele, tenho um formulário com um subformulário.
    No formulário reserva, está o campo TotalDias (que, aliás, preciso descobrir como fazer para calcular a soma dos dias menos meio dia, pois o hóspede entra sempre as 13 horas e, por convenção, foi determinado que o primeiro dia de hospedagem será cobrado sempre meia diária)... no subformulário Hóspedes está o cálculo do subtotal, que é onde ainda não consegui fazer funcionar a multiplicação do valor pelo TotalDias... com certeza é por conta do endereçamento do campo TotalDias que está no formulário.
    No caso do TotalDias, me abre a questão do cálculo do meio dia, já que a multiplicação do valor vem desse campo, também...
    Será que esse código vai funcionar com o valor do meio dia, corretamente? Ou será que seria mais fácil criar um outro campo, que ficaria escondido, para efetuar os cálculos com o código funcional acima???
    Rs... essas duvidas só os pessoal que entende de verdade é quem poderá ajudar...
    Abraços e um bom dia para todos...
    avatar
    l_marcce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2012

    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  l_marcce 5/10/2012, 12:29

    Gente... as vezes as soluções mais simples são as mais difíceis de pensarmos...

    Olhem só a simplicidade do código que funcionou:
    Dentro do campo TotalDias - =DifData("d";[data_entrada];[data_saida])-1/2

    E dentro do campo subtotal:
    =([TotalDias]*[ValorDiária])

    Tudo tão simples e eu quebrando a cabeça durante dias... rs...

    Obrigado à todos, principalmente ao mano criquio, que deu uma luz enorme para a resolução do problema...
    Depois eu volto com mais dúvidas... rs...

    Conteúdo patrocinado


    [Resolvido]Ajuda com dias Empty Re: [Resolvido]Ajuda com dias

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/5/2024, 09:06