Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 1 su 1

Scelta data da Calendario con 3 Combo(Anno, Mese e Giorno)

  1. #1
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Premesso che le 3 Combo dovranno essere così configurate:
    cboAnno
    Tipo Origine Riga= Elenco Valori
    Numero Colonne = 1
    
    cboMese
    Tipo Origine Riga= Elenco Valori
    Numero Colonne = 2
    Larghezza Colonne = 0cm;3cm
    Colonna Associata=1
    
    cboGiorno
    Tipo Origine Riga= Elenco Valori
    Numero Colonne = 1
    
    Questo è il codice da inserire nella Form che gestirà le 3 Combo:
    Option Compare Database
    Option Explicit
    
    Private Sub Form_Load()
        Call LoadYears(Me.cboAnno)
        Call LoadMonths(Me.cboMese)
        Call LoadDays(Me.cboAnno.Value, Me.cboMese.Value, Me.cboGiorno)
    End Sub
    
    Private Sub cboAnno_AfterUpdate()
        Call LoadDays(Me.cboAnno.Value, Me.cboMese.Value, Me.cboGiorno)
    End Sub
    
    Private Sub cboMese_AfterUpdate()
        Call LoadDays(Me.cboAnno.Value, Me.cboMese.Value, Me.cboGiorno)
    End Sub
    
    Function LoadDays(Anno As Integer, Mese As Integer, ByRef cbo As Access.ComboBox, Optional DefaultValue)
        Dim DateEnd     As Date
        Dim DayNum      As Integer
        Dim iDay        As Integer
        
        DateEnd = DateSerial(Anno, Mese + 1, 0)
        DayNum = Day(DateEnd)
        
        cbo.RowSource = vbNullString
        For iDay = 1 To DayNum
            cbo.AddItem iDay
        Next
        If IsMissing(DefaultValue) Then
            cbo.Value = Day(Now)
        Else
            cbo.Value = DefaultValue
        End If
    End Function
    
    Function LoadMonths(ByRef cbo As Access.ComboBox, Optional DefaultValue)
        Dim iM          As Integer
        cbo.RowSource = vbNullString
        
        For iM = 1 To 12
            cbo.AddItem iM & ";" & StrConv(MonthName(iM), vbProperCase)
        Next
        If IsMissing(DefaultValue) Then
            cbo.Value = Month(Now)
        Else
            cbo.Value = DefaultValue
        End If
    End Function
    
    Function LoadYears(ByRef cbo As Access.ComboBox, Optional IniYear, Optional EndYear, Optional DefaultValue)
        Dim iY          As Integer
        Dim iINI        As Integer
        Dim iEND        As Integer
        
        cbo.RowSource = vbNullString
        
        iINI = Year(Now) - 10
        iEND = Year(Now) + 10
        
        If Not IsMissing(IniYear) Then iINI = IniYear
        If Not IsMissing(EndYear) Then iEND = EndYear
        
        If iINI > iEND Then
            iY = iINI
            iINI = iEND
            iEND = iY
        End If
        
        For iY = iINI To iEND
            cbo.AddItem iY
        Next
     
        If IsMissing(DefaultValue) Then
            cbo.Value = Year(Now)
        Else
            cbo.Value = DefaultValue
        End If
        
    End Function
    
    Ultima modifica di @Alex; 18-01-2021 11:43 
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. inversione in una data giorno e mese
    Da trump61 nel forum Microsoft Word
    Risposte: 6
    Ultimo Post: 04-12-2013, 14:22
  2. Risposte: 2
    Ultimo Post: 28-11-2011, 13:36
  3. aggiungere anno/mese/giorno a una variabile date
    Da mattoneo nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 20-10-2008, 20:32
  4. Inserimento solo l'anno (senza mese e giorno)
    Da Martin Landau nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 30-10-2006, 12:24
  5. recuperare giorno/mese/anno dal sistema
    Da mikeee nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 22-05-2005, 12:38