Contare elementi selezionati maschera di riepilogo Access

di il
4 risposte

Contare elementi selezionati maschera di riepilogo Access

Buongiorno a tutti,
Sono uno studente di ingegneria informatica e sto cercando di approcciarmi al settore dei database, iniziando con Microsoft Access. Ho riscontrato un problema e, dopo infinite ricerche - forse sbaglio keyword? - non ne sono venuto a capo.
Ho una maschera con una casella di riepilogo in cui compaiono i 12 mesi dell'anno, selezionabili. Ho impostato come "Evento su click" il dover scrivere quel valore (il nome del mese) in una casella di testo; in caso di selezione multipla, la casella di testo si riempie dei vari mesi selezionati.
Esiste un modo per restituire il numero di elementi selezionati? Lo scopo è, se a ogni mese corrisponde il pagamento di una quota, calcolare in automatico il totale. Con una quota prevista di 10€, quindi, ogni volta che si seleziona un mese il totale aumenta di 10€ e, ogni volta che si deseleziona, il totale diminuisce. Ho tentato con DCount e Conteggio, ma probabilmente li applico nel modo sbagliato.

Allego un'immagine della casella di riepilogo con affianco la casella di testo e il totale che non riesco ad aggiornare in automatico.
Confido nel vostro aiuto, vi auguro una buona serata!
AccessProblema.JPG
AccessProblema.JPG

4 Risposte

  • Re: Contare elementi selezionati maschera di riepilogo Access

    Diciamo che ci sarebbe da capire meglio il fine di questo esercizio... perchè le soluzioni possono essere anche diverse.
    IN linea banale e semplicistica hai semplicemente ragionato non da programmatore... ma da utilizzatore...!
    In programmazione, risulta più utile o conveniente avere come riferimento del Mese il Numero equivalente, e questo per vari motivi, NON ultimo l'ordinamento.

    Ti bastava popolare la ListBox considerando 2 Colonne, la prima Colonna che definiamo BoundColumn sarà l'indice Numerico e la possiamo impostare a Larghezza=0 per non vederla, la 2° Colonna sarà semplicemente di Visualizzazione e conterrà il Nome del Mese.

    Quindi dopo aver predisposto la ListBox alla modalità "TipoOrigineRIga=Elenco valori" ed il Numero di Colonne=2 con Larghezza Colonne="0cm;3cm"

    Puoi popolare la tua ListBox con questo codice su evento Load della Maschera chiamando la Funzione
    
    Private Sub Form_Load()
       Call LoadMonth(Me!NomeListBox)
    End Sub
    La funzione la puoi mettere anche in un Modulo Standard:
    
    Function LoadMonths(ByRef ctl As Access.Control, Optional DefaultValue)
        Dim iM          As Integer
        If Not (TypeOf ctl Is ComboBox Or TypeOf ctl Is ListBox) Then Exit Function
    
        ctl.RowSource = vbNullString
        
        For iM = 1 To 12
            ctl.AddItem iM & ";" & StrConv(MonthName(iM), vbProperCase)
        Next
        If IsMissing(DefaultValue) Then
            ctl.Value = Month(Now)
        Else
            ctl.Value = DefaultValue
        End If
    End Function
    Se poi vorrai leggere nella Tua TextBox gli ItemsSelected, farai un ciclo sulla collection ItemsSelected leggendo la Column(1) invece che la Column(0) che è la BoundColumn restituita leggendo la Default_Propery [Value].



    Buon lavoro.
  • Re: Contare elementi selezionati maschera di riepilogo Access

    Se studi ingegneria informatica perché ti interessi di access?
  • Re: Contare elementi selezionati maschera di riepilogo Access

    @Alex ha scritto:


    Diciamo che ci sarebbe da capire meglio il fine di questo esercizio... perchè le soluzioni possono essere anche diverse.
    IN linea banale e semplicistica hai semplicemente ragionato non da programmatore... ma da utilizzatore...!
    In programmazione, risulta più utile o conveniente avere come riferimento del Mese il Numero equivalente, e questo per vari motivi, NON ultimo l'ordinamento.

    Ti bastava popolare la ListBox considerando 2 Colonne, la prima Colonna che definiamo BoundColumn sarà l'indice Numerico e la possiamo impostare a Larghezza=0 per non vederla, la 2° Colonna sarà semplicemente di Visualizzazione e conterrà il Nome del Mese.

    Quindi dopo aver predisposto la ListBox alla modalità "TipoOrigineRIga=Elenco valori" ed il Numero di Colonne=2 con Larghezza Colonne="0cm;3cm"

    Puoi popolare la tua ListBox con questo codice su evento Load della Maschera chiamando la Funzione
    
    Private Sub Form_Load()
       Call LoadMonth(Me!NomeListBox)
    End Sub
    La funzione la puoi mettere anche in un Modulo Standard:
    
    Function LoadMonths(ByRef ctl As Access.Control, Optional DefaultValue)
        Dim iM          As Integer
        If Not (TypeOf ctl Is ComboBox Or TypeOf ctl Is ListBox) Then Exit Function
    
        ctl.RowSource = vbNullString
        
        For iM = 1 To 12
            ctl.AddItem iM & ";" & StrConv(MonthName(iM), vbProperCase)
        Next
        If IsMissing(DefaultValue) Then
            ctl.Value = Month(Now)
        Else
            ctl.Value = DefaultValue
        End If
    End Function
    Se poi vorrai leggere nella Tua TextBox gli ItemsSelected, farai un ciclo sulla collection ItemsSelected leggendo la Column(1) invece che la Column(0) che è la BoundColumn restituita leggendo la Default_Propery [Value].


    Buon lavoro.

    Grazie mille per la risposta, ma non credo che questo risolva il mio problema.. Io i mesi li visualizzo già nella TextBox e ho anche la colonna ID col numero del mese, che però è nascosta nella casella di riepilogo. Il mio obiettivo è avere il numero di elementi selezionati (es.: se seleziono Marzo, Aprile e Maggio voglio avere come risultato 3; se deseleziono Febbraio il risultato deve essere 2 e così via..)
  • Re: Contare elementi selezionati maschera di riepilogo Access

    Itemsselected.count
Devi accedere o registrarti per scrivere nel forum
4 risposte