Combo con funzione in Control Source

di il
14 risposte

Combo con funzione in Control Source

Ciao a tutti,

vi disturbo ancora perchè sono di fronte a un problema che non riesco a risolvere.
Ho creato una combo all'interno di una maschera che in orgine veniva popolata da valori provenineti da una tabella linkata.
Alla selezione della combo salvavo il valore relativo nella tabella master nel campo chiamato ValCombo.

Ora a seguito di una modifica alla struttura del database, è stato inserito un nuovo cambo nella tabella master che dovrà includere d'ora in avanti i valori provenienti da una nuova cartella linkata ma che dovranno essere selezionati sempre dalla stessa combo (CHE DELIRIO) !!!!

Il problema è legato al fatto che da oggi dovrei visualizzare nella combo i vecchi valori se il campo ValComboNew è vuoto mentre oppure se non è vuoti il valore di ValComboNew.
la Combo dovrà essere popolata dalla sola lista nuova, perchè ogni modifica al campo dovrà essere basata sui nuovi valori.

Spero vivamente di essere riuscito a farmi capire anche.

Grazie a tutti in anticipo.

Ciao
Mak

14 Risposte

  • Re: Combo con funzione in Control Source

    Makrider ha scritto:


    Spero vivamente di essere riuscito a farmi capire
    Per niente.

    Devi dettagliare tutto:
    - nome proprio maschera
    - nome proprio tabella o query dove poggia la combo
    - nomi propri di tutti i campi tabella
    - nomi propri di tutti i controlli in maschera
    - rispiegare tutto passo passo
  • Re: Combo con funzione in Control Source

    Immaginavo

    Vediamo se ci riesco al secondo tentativo.

    MascheraDB contiene due campi provenienti dalla tabella tblEventi:
    TextBox: IDEvento
    Combo Box: IDMeteo (la combo è popolata dalla tabella tblMeteo)

    tblEventi è così strutturata:
    IDEvento (key)
    IDMeteo (num)

    tblMeteo è così strutturata:
    IDMeteo (key)
    Meteo_Desc (text)

    Ora tblEventi è stata modificata come segue:
    IDEvento (key)
    IDMeteo (num)
    IDMeteoNew (num)

    IDMeteoNew è legato alla tabella tblMeteoNew che è così strutturata:
    IDMeteoNew (key)
    MeteoNew_Desc (text)

    Ora quello che vorrei è che mantenendo inalterata la struttura della maschera, la combo mi visualizzi il valore tblMeteo.Meteo_Desc se tblEventi.IDMeteoNew è vuoto o tblMeteoNew.MeteoNew_Desc se non è vuoto.
    L'ulteriore complicazione sta nel fatto che i valori selezionabili nella combo, d'ora in poi dovranno solamente essere quelli provenienti dalla tabella tblMeteoNew e che in caso di modifca ad un record già esistente si vada a canvellare il contenuto di tblEventi.IDMeteo e si inserisca il nuovo valore in tblEventi.IDMeteoNew

    chissà se ce l'ho fatta questa volta...

    Thanks
  • Re: Combo con funzione in Control Source

    La descrizione ora è chiara, secondo le mie richieste. Ma:
    1. Perchè hai tblEventi con i campi:
    IDEvento (OK)
    IDMeteo e IDMeteoNew
    2. Non capisco di cosa parla il tuo database e perchè ti ritrovi con questa organizzazione tabelle.
    3. Magari qualche esempio concreto con alcuni record mi renderebbe la comprensione più completa.

    ...provando a rileggere tutto con più attezione...forse hai bisogno di una "query di aggiornamento"...però vorrei vederci chiaro su tutti i 3 punti precedenti...
  • Re: Combo con funzione in Control Source

    Il DB contiene una lista di eventi dove per ciauscun record era stato associato una situazione meteo del tipo:

    - Meteo Bello
    - Meteo Brutto
    - Meteo Variabile

    Oggi è stato richiesto di estendere e dettagliare maggiormente la condizione metereologica come ad esempio:

    - Sereno
    - Nuvoloso
    - Parzialmente Nuvoloso
    - Pioggia
    - Grandine
    - Neve

    Si vuole inoltre impedire di utilizzare le vecchie decrizioni per i nuovi record o per la modifica di quelli già inseriti.

    Ci sono ad oggi nel database diverse centinai di record e ovviamente di molti di questi record non si riesce più a risalire alla reale condizione meteo alla data dell'evento, quinidi avrei necessità di visualizzare il valore attuale se c'è e nel caso di modifica il valore vecchio deve essere sostituito dalle nuove diciture.

    Di seguito qualche esempio:
    IDEvento = 1
    IDMeteo = 1 (Bello)
    IDMeteoNew = 0 (Null)

    Se visualizzo il record la combo mi deve mostrare "BELLO" ma se clicco e cerco di modificare mi mostra i valori di tblMeteoNew.
    Se seleziono una voce per modifica il record deve diventare:
    IDEvento = 1
    IDMeteo = 0 (Null)
    IDMeteoNew = 3 (Parzialmente Nuvoloso)
  • Re: Combo con funzione in Control Source

    Aspetta, bello bello, faccio fatica a comprendere l'intero contesto. Provo a descriverlo a parole mie.
    Assodiamo che Bello=1; Variabile=2; Brutto=3

    Io vedrei la tabella Eventi, almeno con un campo DataEvento...continuo a ruota libera...

    IDEvento / DataEvento / IDMeteo / IDMeteoNew
    1 / 1-6-2015 / 1 / Null
    2 / 2-6-2015 / 1 / Null
    3 / 3-6-2015 / 1 / Sereno
    4 / 4-6-2015 / 3 / Null
    5 / 5-6-2015 / 3 / Grandine
    6 / 6-6-2015 / Null / Pioggia
    7 / 7-6-2015 / 3 / Pioggia

    Chi compila questa tabella?
    Se oggi 25-6-2015 si riescono a conoscere i dettagli ossia IDMeteoNew del 2-6-2015, qualcuno può-deve aggiustare oppure no?
    Poi...non so...mi perdo ancora...
  • Re: Combo con funzione in Control Source

    La tua descrizione è corretta.
    Ci sono diversi utenti che compilano la tabella e per i nuovi campi dovranno mettere IDMeteoNew ma è stato richiesto di aggiornare a IDMeteoNew ove possibile.


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Combo con funzione in Control Source

    Trovo che avresti commesso l'errore di mettere 2 IDMeteo in Eventi, quando invece bisognerebbe ragionare a cascata, così:

    MeteoOld
    IDMeteoOld (chiave primaria)
    MeteoOldDesc

    MeteoNew
    IDMeteoNew (chiave primaria
    MeteoNewDesc
    IDMeteoOld (numerico)

    Eventi
    IDEvento (chiaveprimaria)
    IDMeteoNew (numerico)

    Relazioni:
    MeteoOld.IDMeteoOld uno-a-molti MeteoNew.IDMeteoOld
    MeteoNew.IDMeteoNew uno-a-molti Eventi.IDMeteoNew

    Non trovo conveniente usare il valore 0 o Null, piuttosto io proporrei dei record che ripetono i 3 valori 1=Bello; 2=Variabile; 3=Brutto anche in tabella MeteoNew. In questo modo usi questi valori qualora non hai la valutazione precisa (New).
    Nella maschera Eventi puoi creare un meccanismo di "caselle combinate a cascata" (leggi numerosi thread che ne parlano) che ti permette di visualizzare entrambe le valutazioni. Se domani non ti interessa visualizzare più il campo IDMeteoOld, puoi sempre eliminarlo, tanto vedrai i corrispondenti valori Bello, Variabile, Brutto in IDMeteoNew.
  • Re: Combo con funzione in Control Source

    Effettivamente è una complicazione ma mettendo tutto in una tabella ho il problema che nella combo trovo sempre anche le vecchie diciture che non devono assolutamente più essere usate in futuro.
    In questo modo invece il rischio che vengano usate ancora è alto.
  • Re: Combo con funzione in Control Source

    Io trovo che tu il problema lo risolvi ugualmente. Se fai come ti ho detto, puoi anche decidere di eliminare il campo IDMeteoOld successivamente. Il valore di IDMeteoNew resta ugualmente. Se sei furbo ad attribuire esattamente i valori di IDMeteoNew così:
    1=Bello
    2=Variabile
    3=Brutto
    4=Sereno
    5=Nuvoloso
    6=Molto nuvoloso
    7=Pioggia
    8=Grandine
    9=Neve
    per i valori 1-2-3 ritroverai le vecchie diciture (perchè non puoi fare altrimenti), le altre saranno automaticamente aggiornate.
  • Re: Combo con funzione in Control Source

    Esattamente quello che dicevo così funziona ma quando popoli la combo le descrizioni Bello,Variabile e Brutto vengono comunque visualizzate.
  • Re: Combo con funzione in Control Source

    Io non ho capito se IDMeteoOld lo vuoi eliminare (successivamente) oppure no.
    Oppure non lo vuoi eliminare, vuoi che resti, ma che nessuno ci vada più a cliccare sopra.
  • Re: Combo con funzione in Control Source

    Semplicemente la COMBO deve visualizzare IDMeteoNew se è valorizzato altrimenti IDMeteoOld; la lista che compare nella combo da cui posso selezionare il valore da impostare deve solo essere IDMeteoNew.

    Questo perchè se oggi faccio una modifica devo poter immettere solamente valori IDMeteoNew.
    IDMeteoOld rimarrà sicuramente perchè per gli eventi più vecchi non ci sarà la possiblità di risalire alle condizioni meteorologiche e quindi di effettuare l'aggiornamento.
  • Re: Combo con funzione in Control Source

    Credo che la soluzione sia la seguente. Tu devi lavorare solo con IDMeteoNew e quando non è valorizzato (ossia Null), si deve "solo vedere" IDMeteoOld. Ora non so bene qual'è l'ordine delle colonne della tua combo IDMeteoNew. Le dichiaro io adesso considerato che Access chiama Colonna1=Column(0); Colonna2=Column(1); Colonna3=Column(2) ecc.... Quindi attribuisco
    IDMeteoNew=Column(0)
    IDMeteoOld=Column(1)
    1. Hai detto che non vuoi vedere scritto Bello; Variabile; Brutto in IDMeteoNew: OK. Tu ora ci scrivi dentro Null in tutti e 3 quei record
    2. Trasforma la casella combinata IDMeteoOld in casella di testo
    3. IDMeteoOld deve avere la proprietà "Origine controllo" scritta così:
    =[IDMeteoNew].Column(1)
    4. Salva tutto

    Da ora in poi l'utente clicca sempre e soltanto sulla casella combinata IDMeteoNew e non dovrà/potrà mai più toccare il controllo IDMeteoOld che diventa solo un controllo estetico, solo da guardare.
  • Re: Combo con funzione in Control Source

    OK, risolto grazie ai tuoi suggerimenti.

    Grazie mille
    Mak
Devi accedere o registrarti per scrivere nel forum
14 risposte