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.