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]Listar dias de um mês em uma caixa de combinação

    avatar
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 20/12/2012, 20:10

    Boa tarde a todos...

    Tentei pesquisar, mas não consegui achar, ou talvez não soube procurar mesmo

    Mas a minha dúvida é: Como listar os dias de um mês em uma caixa de combinação se baseando em duas caixas de texto que contenham os valores mês e ano.

    Se alguém puder me ajudar agradeço.

    Abraço
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 20/12/2012, 21:08

    Veja se as dicas daqui ajudam.


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 01:52

    Obrigado pela luz, mas está muito além do meu conhecimento.
    Um abraço
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 21/12/2012, 02:13

    Considerando um formulário com as combos cboAnos, cboMeses e cboDias, coloque no evento "Ao iniciar" do formulário:

    Código:
    Dim A As Double

    Me.cboAnos.RowSourceType = "Value List"
    Me.cboAnos.RowSource = ""

    Me.cboMeses.RowSourceType = "Value List"
    Me.cboMeses.RowSource = ""

    For A  = 1000 To 3000
        Me.dboAnos.AddItem A
    Next

    For A = 1 To 12
        Me.cboMeses.AddItem Format(A, "00")
    Next
    Agora, no evento "Após Atualizar" da combo cboMeses:

    Código:
    Dim A As Integer

    Me.cboDias.RowSourceType = "Value List"
    Me.cboDias.RowSource = ""

    For A = 1 To Day(DateSerial(Year(Me.cboAnos()), Month(Me.cboMeses()) + 1, 0))
        Me.cboDias.AddItem Format(A, "00")
    Next


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 04:10

    Mestre Criquio, funcionou, mas tem uma ressalva, os dias dos meses vão sempre até 31. Tem como considerar os meses 28, 29, 30 e 31?
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 21/12/2012, 11:02

    Altere o "Após atualizar" da combo cboDias para:

    Código:
    Dim A As Integer, Dias As Integer

    If Me.cboMeses = 2 Then
        If Me.cboAnos Mod 400 = 0 Or (Me.cboAnos Mod 4 = 0 And Me.cboAnos Mod 100 <> 0) Then
            Dias = 29
        Else
            Dias = 28
        End If
    ElseIf Me.cboMeses = 1 Or Me.cboMeses = 3 Or Me.cboMeses = 5 Or Me.cboMeses = 7 Or Me.cboMeses = 8 Or Me.cboMeses = 10 Or Me.cboMeses = 12 Then
        Dias = 31
    Else
        Dias = 30
    End If

    Me.cboDias.RowSourceType = "Value List"
    Me.cboDias.RowSource = ""

    For A = 1 To Dias
        Me.cboDias.AddItem Format(A, "00")
    Next


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 12:27

    Aparentemente nada aconteceu, a cboDias continua listando 31 dias para todos os meses.
    Mais alguma idéia?
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 21/12/2012, 12:39

    Você alterou toda a instrução do "Após atualizar" da cboMeses para essa que passei por último? Tem que funcionar dessa forma.


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 13:18

    Eu tinha alterado a cbodias como na mensagem anterior. Mas agora deu certo, vou tentar adaptar a minha necessidade.
    Mestre, obrigado pela força, sem a sua ajuda talvez eu só conseguisse fazer isso depois da copa do mundo.
    Valeu mesmo!

    No entanto vou adiantar o que pretendo fazer (na verdade refazer, pois agora mudou muita coisa). De repente alguem me indica o restante do caminho.

    A idéia é fazer lançamentos em um livro caixa. Para isso existe um formulário onde seleciono o Ano e o Mês em duas caixas de combinação, e no subformulário apenas o dia. Lembrando que só poderá existir um único mês para cada ano. A necessida de se lançar o dia no subformulário existe porque os lançamentos serão feitos todos no começo de cada mês subsequente na maioria das vezes.
    avatar
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 16:43

    Criquio, percebi que não preciso mudar muito meu formulário de lançamento. Eu só preciso alterar o seu último código. O problema é que eu não consigo fazer isso sozinho, tentei até agora, mas sem sucesso. Por isso: Como eu faço pra usar o seu código para validar o meu campo dia no subformulário? Ou seja, ao invés de retornar uma lista de dias, ele impediria que no campo dia do subformulário os valores excedessem aqueles que correspondem ao mês referido.

    Desculpe toda a volta que te fiz dar junto comigo, mas foi só agora que percebi que o que eu preciso é validar o campo.

    Obrigado
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 21/12/2012, 18:25

    Vamos ter então que fazer uma pesquisa na tabela para ver se já tem um determinado ano cadastrado, certo? Tendo o dito ano, iremos preencher a cboMeses apenas com os meses não constantes nesse ano, certo? Se for isso mesmo que entendi, a cboDias fica no subform, correto? Então no evento "Ao carregar" do formulário, iremos preencher apenas a combo dos anos:

    Código:
    Dim A As Double

    Me.cboAnos.RowSourceType = "Value List"
    Me.cboAnos.RowSource = ""

    For A  = 1000 To 3000
        Me.cboAnos.AddItem A
    Next
    Agora, no evento "Após atualizar" da combo cboAnos, preenchemos a cboMeses pesquisando na tabela se já não tem esse mês para o ano escolhido:

    Código:
    Dim M As Integer

    Me.cboMeses.RowSourceType = "Value List"
    Me.cboMeses.RowSource = ""

    For M  = 1 To 12
        If DCount("*", "NomeDaTabela", "Ano=" & Me.cboAno.Value & " And Mês=" & M & ") = 0 Then
            Me.cboAnos.AddItem Format(M, "00")
        End If
    Next
    Por último, passamos a instrução de preencher a combo cboDias para no "Após atualizar" da cboMeses e mencionando o subform:

    Código:
    Dim D As Integer, Dias As Integer

    If Me.cboMeses = 2 Then
        If Me.cboAnos Mod 400 = 0 Or (Me.cboAnos Mod 4 = 0 And Me.cboAnos Mod 100 <> 0) Then
            Dias = 29
        Else
            Dias = 28
        End If
    ElseIf Me.cboMeses = 1 Or Me.cboMeses = 3 Or Me.cboMeses = 5 Or Me.cboMeses = 7 Or Me.cboMeses = 8 Or Me.cboMeses = 10 Or Me.cboMeses = 12 Then
        Dias = 31
    Else
        Dias = 30
    End If

    Me!NomeDoSubform.Form!cboDias.RowSourceType = "Value List"
    Me!NomeDoSubform.Form!cboDias.RowSource = ""

    For D = 1 To Dias
        Me!NomeDoSubform.Form!cboDias.AddItem Format(D, "00")
    Next
    Se bem entendi, deve ser algo assim.


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 21/12/2012, 20:14

    Criquio, mais uma vez obrigado por sua disposição em me ajudar. A dificuldade na minha explicação eu acho que tem a ver com a mudança da proposta original.

    Bom o que eu gostaria que você me ajudasse é com essa parte do seu código abaixo, quanto as combos ano e mês tudo ok.


    Código:
    Dim D As Integer, Dias As Integer

    If Me.cboMeses = 2 Then
        If Me.cboAnos Mod 400 = 0 Or (Me.cboAnos Mod 4 = 0 And Me.cboAnos Mod 100 <> 0) Then
            Dias = 29
        Else
            Dias = 28
        End If
    ElseIf Me.cboMeses = 1 Or Me.cboMeses = 3 Or Me.cboMeses = 5 Or Me.cboMeses = 7 Or Me.cboMeses = 8 Or Me.cboMeses = 10 Or Me.cboMeses = 12 Then
        Dias = 31
    Else
        Dias = 30
    End If

    Me!NomeDoSubform.Form!cboDias.RowSourceType = "Value List"
    Me!NomeDoSubform.Form!cboDias.RowSource = ""

    For D = 1 To Dias
        Me!NomeDoSubform.Form!cboDias.AddItem Format(D, "00")
    Next

    A minha idéia é que esse código fosse adaptado para ao invés de gerar uma lista de dias, validar uma caixa de texto, que seria o meu campo "dia" no subformulário. Ele verificaria a combo ano e mês no formulário principal e retornaria uma mensagem de erro caso o dia informado não correspondesse ao mês e ano. Por exemplo: Imagino que o código ficaria no evento antes de atualizar do campo dia e no caso de ser inserido o valor "30" para o mês de fevereiro, ele retornaria uma mensagem de erro e cancelaria a inserção até que se inserisse um valor compatível.

    To na dúvida se consegui explicar direito, mas la vai.

    Mais uma vez, obrigado.
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 21/12/2012, 20:28

    Transforme o evento "Após atualizar" da combo cboMeses para uma função pública do tipo Integer mudando o Private Sub cboMeses_AfterUpdate() para Public Function Dias() As Integer. Basta mudar essa mesma linha para:

    Public Function Dias() As Integer

    Agora, no "Antes de atualizar" desse campo:

    Código:
    If Not IsNumeric(Me.NomeDoCampo) Or Me.NomeDoCampo > Dias Or Me.NomeDoCampo < 1 Then
        MsgBox "Dia errado. Digite um dia válido", vbCritical, "Atenção"
        Me.NomeDoCampo.Undo
    End If


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 22/12/2012, 01:39

    Da uma mensagem de erro para todos os dias. O que será que está errado?
    Anexos
    [Resolvido]Listar dias de um mês em uma caixa de combinação AttachmentRelFinanceiro.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (62 Kb) Baixado 15 vez(es)
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 22/12/2012, 02:01

    Passe tudo para o subformulário. A função:

    Código:
    Public Function Dias() As Integer

    Dim D As Integer

    If Forms!frmLivroCaixaReceitas!txtmes = "Fevereiro" Then
        If Forms!frmLivroCaixaReceitas!txtAno Mod 400 = 0 Or (Forms!frmLivroCaixaReceitas!txtAno Mod 4 = 0 And Forms!frmLivroCaixaReceitas!txtAno Mod 100 <> 0) Then
            Dias = 29
        Else
            Dias = 28
        End If
    ElseIf Forms!frmLivroCaixaReceitas!txtmes = "Janeiro" Or Forms!frmLivroCaixaReceitas!txtmes = "Março" Or Forms!frmLivroCaixaReceitas!txtmes = "Maio" Or Forms!frmLivroCaixaReceitas!txtmes = "Julho" Or Forms!frmLivroCaixaReceitas!txtmes = "Agosto" Or Forms!frmLivroCaixaReceitas!txtmes = "Outubro" Or Forms!frmLivroCaixaReceitas!txtmes = "Dezembro" Then
        Dias = 31
    Else
        Dias = 30
    End If

    End Function
    E no evento "Antes de atualizar" do campo do dia, coloque assim:

    Código:
    If Not IsNumeric(Me.txtdia) Or Me.txtdia > Dias Or Me.txtdia < 1 Then
        MsgBox "Dia errado. Digite um dia válido", vbCritical, "Atenção"
        DoCmd.CancelEvent
        Me.txtdia = Null
    End If
    Caso queria deixar a função Dias disponível para outros formulários ou relatórios, mude-a para um módulo global.


    .................................................................................
    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
    Romerio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Romerio 22/12/2012, 13:00

    Perfeito mestre criquio, muito obrigado.
    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]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  criquio 22/12/2012, 19:28

    Grato pelo retorno. O fórum agradece.


    .................................................................................
    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.


    Conteúdo patrocinado


    [Resolvido]Listar dias de um mês em uma caixa de combinação Empty Re: [Resolvido]Listar dias de um mês em uma caixa de combinação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 21:46