Problema aggiornamento di tutti gli item con vba

di il
15 risposte

Problema aggiornamento di tutti gli item con vba

Ciao a tutti!
Sono un neofita di Access, che sto utilizzando da circa una settimana.

Per fare un po' di training sto provando a costruire un database per la gestione delle spese domestiche.
Ho creato macrocategorie e categorie per le voci di spesa, e le ho collegate tra loro.
Adesso sto costruendo una maschera per l'input dei dati, e sto provando a scrivere del codice, ma qualcosa non funziona

Allego lo screen della maschera



Dovrebbe funzionare così:
1a. si seleziona la macrocategoria (01, 02, ecc)
1b. nel campo di testo corrispondente viene visualizzato il nome delle macrocategoria
1c. un campo di testo opportuno ha lo sfondo del colore di riferimento (lo spazio "colore" nello screen)

2a. scelta la macrocategoria, si attivano le categorie
2b. scelta la categoria, nel campo di testo corrispondente viene visualizzato il nome delle categoria

Tra macrocategoria e categorie esistono delle relazioni "uno a molti".
Per i punti 1b 1c e 2b ho provato a scrivere del codice, ma non so perché quando cambio un attributo a un oggetto non lo cambia solo all'elemento corrente, ma a tutti, anche se scrivo la macro per Form_Current() o GotFocus()!!!

Alla fine sono riuscito a realizzare i punti 1b e 2b scrivendo una formula nella casella di testo, ma anche in questo caso ho l'aggiornamento su tutti gli elementi!!!

Non sono riuscito a trovare una soluzione per il punto 1c

Allego il database:
https://dl.dropboxusercontent.com/u/45403015/_database_conti_economici_00.accdb

Riuscire a darmi una mano e a spiegarmi cosa sto sbagliando?

Grazie a tutti per il supporto!!

Petronio

15 Risposte

  • Re: Problema aggiornamento di tutti gli item con vba

    Mi piacerebbe capire che codice vuoi scrivere, a parte gli Eventi che hai descritto, perchè io che uso Access da qualche giorno in più, per fare quello che dovresti fare tu, ho la spudorata convinzione NON SERVA 1 SOLA RIGA di codice...!

    Puoi spiegare bene cosa ti spinge a voler scrivere codice..., e soprattutto hai capito come funziona Access prima di tutto, altrimenti facciamo fatica anche solo a comunicare.
  • Re: Problema aggiornamento di tutti gli item con vba

    Anche per me c'è una descrizione caotica che non mi permette di capire. Ho provato ad aprire il tuo database. Mi viene di rilevare i seguenti errori logico-strutturali:
    1. La finestra Relazioni mostra solo la relazione Macrocategorie uno-a-molti Categorie: OK. Ma le altre tabelle che fanno?
    2. La tbl_Spese contiene entrambi i campi Macrocategoria e Categoria. Credo che dovresti avere solo il campo Categoria (a rigore di normalizzazione). Poi (in maschera) un opportuno gioco di "caselle combinate a cascata" (leggi numerosissimi thread che parlano di questo argomento) dovrebbe permetterti di selezionare entrambi.

    Riguardo i "colori" (io veramente non ci ho capito quasi nulla)...probabilmente petronio si trova nella difficoltà di "condizionare" il colore di un controllo. Le maschere prevedono la "formattazione condizionale" che però ha un limite di circa 3 opzioni (forse nelle ultime versioni ampliate a 10...non so...non ricordo). Ricordo vaghissimamente di un altro utente che una volta postò questo dilemma che poteva essere gestito via codice VBA. Posso sbagliarmi grossolanamente...e non posso neanche ricordare "quel" thread. Boh! Alzo le mani.
  • Re: Problema aggiornamento di tutti gli item con vba

    Ciao Alex, grazie per aver risposto!

    @Alex ha scritto:


    Puoi spiegare bene cosa ti spinge a voler scrivere codice..., e soprattutto hai capito come funziona Access prima di tutto, altrimenti facciamo fatica anche solo a comunicare.
    Non sono un programmatore, né un utilizzatore quotidiano di database. Fino ad adesso ho usato Excel per tener traccia di alcuni conti, ma il mio approccio mi sembrava limitato. Cercando in rete mi sono appassionato ai database. Non so dirti se ho capito come funziona Access, per me è un database in cui inserire dati da cui poter estrarre statistiche ed informazioni

    @Alex ha scritto:


    Mi piacerebbe capire che codice vuoi scrivere, a parte gli Eventi che hai descritto, perchè io che uso Access da qualche giorno in più, per fare quello che dovresti fare tu, ho la spudorata convinzione NON SERVA 1 SOLA RIGA di codice...!
    Sarei ben felice di non scrivere codice! Purtroppo non sono riuscito a trovare altra soluzione, al momento. Sopra ho allegato l'intero database (c'è il link per scaricarlo), ma provo qua a riassumere i problemi che ho avuto e le soluzione che ho trovato (che però mi sa che non sono le migliori, dato che non funzionano )

    1. Aggiornamento liste combobox collegate
    Per aggiornare la lista delle categorie in base ala selezione della macrocategoria, in rete ho trovato che era necessario scrivere questo pezzo di codice:
    
    Private Sub cboMacrocategoria_Click()
            Me.cboCategoria.Requery
            Me.cboMacrocategoria.Requery
    End Sub
    
    dove cboMacrocategoria è il label del combobox che contiene la lista con le macrocategorie, mentre cboCategoria contiene le categorie.

    2. Titolo della categoria
    Nella Tabella delle macrocategorie e delle categorie (individuate da un numero) c'è un campo con il nome della categoria. La soluzione che ho trovato in rete per fare aggiornare il il textbox dove va indicato il nome delle cate, è stata scrivere il seguente codice nel textbox in modalità struttura:
    =[cboMacrocategoria].[column](1)
    e
    =[cboCategoria].[column](2)
    Ovviamente il codice punta alle colonne dove si trova il nome della categoria

    3. Colore sfondo textbox
    Avevo seguito questa strada anche per il punto (2), ma alla fine non funzionava esattamente come quello che sto per spiegare.
    A ogni macrocateogoria ho associato un colore, in modo da individuare visivamente subito il tipo di spesa. Esattamente come per il nome della macrocategoria, vorrei che la scelta di una specifica macrocategoria facesse cambiare il colore di sfondo di un textbox.
    Ho scritto questo codice:
    
            Dim COLORE00 'As Long
            Dim COLORE01
            Dim COLORE02
            Dim COLORE03
            Dim COLORE04
            Dim COLORE05
            Dim COLORE06
            Dim COLORE07
            Dim COLORE99
            Dim IDMACROCATEGORIA As String
                
            'SET DI COLORI
            COLORE00 = RGB(102, 204, 0)     'VERDE CHIARO
            COLORE01 = RGB(0, 204, 0)       'VERDE
            COLORE02 = RGB(220, 20, 60)     'ROSSO crimson
            COLORE03 = RGB(255, 0, 0)       'MARRONE sienna
            COLORE04 = RGB(255, 215, 0)     'GIALLO gold
            COLORE05 = RGB(0, 0, 128)       'BLU navy
            COLORE06 = RGB(102, 0, 204)     'VIOLA
            COLORE07 = RGB(128, 0, 128)     'VIOLA SCURO purple
            COLORE99 = RGB(160, 161, 160)   'GRIGIO dim grey
            
            IDMACROCATEGORIA = Me.cboMacrocategoria.Value
        
            '1. Cambia colore
            Select Case IDMACROCATEGORIA
                Case "00"
                    Me.txtColore.BackColor = COLORE00
                Case "01"
                    Me.txtColore.BackColor = COLORE01
                Case "02"
                    Me.txtColore.BackColor = COLORE02
                Case "03"
                    Me.txtColore.BackColor = COLORE03
                Case "04"
                    Me.txtColore.BackColor = COLORE04
                Case "05"
                    Me.txtColore.BackColor = COLORE05
                Case "06"
                    Me.txtColore.BackColor = COLORE06
                Case "07"
                    Me.txtColore.BackColor = COLORE07
                Case "99"
                    Me.txtColore.BackColor = COLORE99
            End Select
    
    La logica è la seguente: quando selezione una macrocategoria, la variabile IDMACROCATEGORIA prende il codice numerico a due cifre che individua quella categoria. A questo punto, si entra dentro un struttura Select Case, che sulla base della macrocategoria assegna allo sfondo un certo colore.

    Considerazione finale
    Il programma sembra funzionare, ma il solo (!!!) difetto l'aggiornamento avviene su tutti gli item inseriti nel database (ad esempio, tutti gli sfondi prendono il colore della macrocategoria che sto selezionando), e non solo sull'item che sto modificando!!!

    Spero di essere riuscito a chiarire cosa vorrei fare e perché sto usando dei codici.


    Grazie
    Petronio
  • Re: Problema aggiornamento di tutti gli item con vba

    Non pensi di aver postato tanti problemi tutti insieme? Sarebbe stato meglio spezzettare i problemi uno per uno per ogni thread (non ci sono limiti al riguardo).
    Per me: Riparti da una struttura tabelle normalizzata e completa. Quei 2 campi in tbl_Spese non mi piacciono.
  • Re: Problema aggiornamento di tutti gli item con vba

    Ciao OsvaldoLaviosa!

    OsvaldoLaviosa ha scritto:


    Anche per me c'è una descrizione caotica che non mi permette di capire. Ho provato ad aprire il tuo database. Mi viene di rilevare i seguenti errori logico-strutturali:
    1. La finestra Relazioni mostra solo la relazione Macrocategorie uno-a-molti Categorie: OK. Ma le altre tabelle che fanno?
    2. La tbl_Spese contiene entrambi i campi Macrocategoria e Categoria. Credo che dovresti avere solo il campo Categoria (a rigore di normalizzazione). Poi un opportuno gioco di "caselle combinate a cascata" (leggi numerosissimi thread che parlano di questo argomento), in maschera decidi di scegliere entrambi.
    Purtroppo il database non è completo, ma è in fase di costruzione, quindi molte cose che ho in mente ancora non sono state implementate. Al momento sto solo costruendo la maschera per l'input dati.

    Ci sono 4 tabelle, che hanno questo scopo:
    1. tbl_Spese: contiene tutte le spese
    2. tbl_Macrocategorie: contiene le macrocategorie
    3. tbl_Categorie: contiene le categorie, ed è collegata a Macrocategorie con una relazione uno a molti (come tu stesso hai notato)
    4. tbl_Conti: contiene le tipologie di conti a cui addebitare la spesa (spesa da un conto corrente Unicredit, da una carte Genius o una carta cash)

    In tbl_Spese ho deciso di indicare come campo sia la macrocategorie sia la categoria perché poi vorrei fare delle analisi statistiche basate o solo sulle macrocategorie o solo sulle categorie.

    Nella mia organizzazione finale, potrei avere diverse categorie con lo stesso "codice", ma differenti per la macrocategoria. La categoria "vera" dovrebbe essere individuata da da 4 numeri, i primi due che individuano la macrocategoria, gli ultimi due la categoria. Quindi potrei avere la categoria 0201 ma anche 0301. Per motivi pratici ho pensato di separare i due numeri (02 e 01, ad esempio).

    Come potrei migliorare la struttura logica?

    Il problema più urgente, al momento, rimane comunque l'aggiornamento dei tutti gli item quando modifico il campo di un elemento.
    Hai qualche suggerimento per questo?

    Grazie per l'attenzione
    Petronio
  • Re: Problema aggiornamento di tutti gli item con vba

    OsvaldoLaviosa ha scritto:


    Non pensi di aver postato tanti problemi tutti insieme? Sarebbe stato meglio spezzettare i problemi uno per uno per ogni thread (non ci sono limiti al riguardo).
    Il problema di questa domanda è perché si aggiornano tutti gli item e non solo quello che sto modificando

    Grazie alla tua segnalazione di prima ho scoperto che posso impostare la struttura in modo migliore, quindi raccogliendo i suggerimenti e cercando in rete proverò a cambiare la struttura

    OsvaldoLaviosa ha scritto:


    Per me: Riparti da una struttura tabelle normalizzata e completa. Quei 2 campi in tbl_Spese non mi piacciono.
    Cosa si intende per tabella normalizzata e completa?
  • Re: Problema aggiornamento di tutti gli item con vba

    petronio ha scritto:


    In tbl_Spese ho deciso di indicare come campo sia la macrocategorie sia la categoria perché poi vorrei fare delle analisi statistiche basate o solo sulle macrocategorie o solo sulle categorie.
    Questo potrai ottenerlo ugualmente impostando opportune query che tengano conto di più tabelle relazionate.

    petronio ha scritto:


    Nella mia organizzazione finale, potrei avere diverse categorie con lo stesso "codice", ma differenti per la macrocategoria. La categoria "vera" dovrebbe essere individuata da da 4 numeri, i primi due che individuano la macrocategoria, gli ultimi due la categoria. Quindi potrei avere la categoria 0201 ma anche 0301. Per motivi pratici ho pensato di separare i due numeri (02 e 01, ad esempio).
    Questa cosa la devi gestire bene-bene-bene. Devi avere le idee chiare.

    petronio ha scritto:


    Il problema più urgente, al momento, rimane comunque l'aggiornamento dei tutti gli item quando modifico il campo di un elemento.
    No. Devi procedere passo passo coerentemente.
    Prima devi NORMALIZZARE ossia impostare correttamente tutte le tue tabelle con relazioni. Poi ti accorgerai tu stesso che il punto di vista cambierà automaticamente e molti tuoi "dilemmi" cambieranno logica/connotazione rendendo vane le tue successive domande.

    petronio ha scritto:


    Come potrei migliorare la struttura logica?

    petronio ha scritto:


    Cosa si intende per tabella normalizzata e completa?
    1. Apri un nuovo thread (consiglio la sezione "Progettazione database") in cui esponi il tuo scenario tabelle e relazioni.
    2. Racconta per bene cosa ti interessa gestire esattamente. Fai anche alcuni esempi significativi.
  • Re: Problema aggiornamento di tutti gli item con vba

    OsvaldoLaviosa ha scritto:


    Devi procedere passo passo coerentemente.
    Prima devi NORMALIZZARE ossia impostare correttamente tutte le tue tabelle con relazioni. Poi ti accorgerai tu stesso che il punto di vista cambierà automaticamente e molti tuoi "dilemmi" cambieranno logica/connotazione rendendo vane le tue successive domande.

    OsvaldoLaviosa ha scritto:


    1. Apri un nuovo thread (consiglio la sezione "Progettazione database") in cui esponi il tuo scenario tabelle e relazioni.
    2. Racconta per bene cosa ti interessa gestire esattamente. Fai anche alcuni esempi significativi.
    Grazie per il suggerimento OsvaldoLaviosa!
    Adesso provo a "raccontare" cosa vorrei fare e a chiedere qualche suggerimento!

    Petronio
  • Re: Problema aggiornamento di tutti gli item con vba

    L'immagine che hai esposto rappresenta una maschera continua... e dovresti sapere che è molto particolare... tanto che ad esempio il colore non lo potrai MAI gestire come hai pensato ma dovrai affidarti alla formattazione condizionata.
    Per il resto mi pare tu stia utilizzando eventi non adeguati... nelle combo si usa AfterUpdate... ma nelle maschere continue poi se non conosci bene come gestire... queste cose hanno effetto non solo sul record attivo ma sulla visualizzazione di tutti.
  • Re: Problema aggiornamento di tutti gli item con vba

    @Alex ha scritto:


    L'immagine che hai esposto rappresenta una maschera continua... e dovresti sapere che è molto particolare... tanto che ad esempio il colore non lo potrai MAI gestire come hai pensato ma dovrai affidarti alla formattazione condizionata.
    E' la prima volta che sento parlare di maschera continua.. come scrivevo su, lavoro su access da poco più di una settimana, e fino ad adesso ho solo seguito tutorial trovati in rete qua e là.
    Adesso provo a guardare la formattazione condizionate

    @Alex ha scritto:


    Per il resto mi pare tu stia utilizzando eventi non adeguati... nelle combo si usa AfterUpdate... ma nelle maschere continue poi se non conosci bene come gestire... queste cose hanno effetto non solo sul record attivo ma sulla visualizzazione di tutti.
    Grazie per la dritta! Adesso provo a mettere il codice in AfterUpdate
    Sai indicarmi un link dove posso trovare informazioni dettagliare sulle maschere continue?

    Petronio
  • Re: Problema aggiornamento di tutti gli item con vba

    Access non è uno strumento così banale... e prima di buttarsi credo sia utile conoscerlo un po... certo che difficilmente troverai articoli che ti espongono pregi/difetti delle maschere continue.... ma le considerazioni sono poche.... e basta aprire la maschera in struttura e riflettere a quanti controlli si vedono.... rispetto a quanti vengono visualizzati in modalità Normale.
    In ogni caso ti suggerisco di fare sperimentazione probabilmente ti rende meglio l'idea dei limiti...
  • Re: Problema aggiornamento di tutti gli item con vba

    @Alex ha scritto:


    Access non è uno strumento così banale... e prima di buttarsi credo sia utile conoscerlo un po... certo che difficilmente troverai articoli che ti espongono pregi/difetti delle maschere continue.... ma le considerazioni sono poche.... e basta aprire la maschera in struttura e riflettere a quanti controlli si vedono.... rispetto a quanti vengono visualizzati in modalità Normale.
    In ogni caso ti suggerisco di fare sperimentazione probabilmente ti rende meglio l'idea dei limiti...
    Hai perfettamente ragione, però è difficile conoscere bene un programma prima di iniziare a usarlo, e da qualche parte bisogna pur iniziare. Spero che il trial and error mi permetta di comprendere rapidamente vantaggi e svantaggi principali, o almeno degli strumenti che vorrei utilizzare io.

    Hai qualche guida da consigliare per iniziare?
  • Re: Problema aggiornamento di tutti gli item con vba

    Il forum suggerisce questi
    https://www.iprogrammatori.it/forum-programmazione/access/libri-access-consigliati-per-principianti-esperti-t13142.html
    Io ho imparato le basi da una vecchia collana, ancora esistente "McGraw-Hill: Computer no problem - Access".
  • Re: Problema aggiornamento di tutti gli item con vba

    petronio ha scritto:


    Hai perfettamente ragione, però è difficile conoscere bene un programma prima di iniziare a usarlo, e da qualche parte bisogna pur iniziare. Spero che il trial and error mi permetta di comprendere rapidamente vantaggi e svantaggi principali, o almeno degli strumenti che vorrei utilizzare io.

    Hai qualche guida da consigliare per iniziare?
    Si vero per imparare devi usarlo... io aggiungo che in parallelo ti serve almeno comprendere le basi strutturali.
    Ti suggerisco di non spendere soldi con guide da principianti ma di orientarti su un manuale Avanzato ed approfondito... magari scritto da ken getz o litwin anche se su versioni precedenti.
    Ti suggerisco un libro per A97 che spiega in modo perfetto Access valido al 99% anche sulle versioni attuali...
    Questo è il migliore in assoluto(se lo trovi):
    https://www.amazon.it/Access-Developers-Handbook-Paul-Litwin/dp/0782119417

    Manca la formattazione condizionata... ma io per quella userei la guida in linea sono 2 sciocchezze da capire.
Devi accedere o registrarti per scrivere nel forum
15 risposte