Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328

    Problema Enorme Ms Access

    ho un database in cui esiste una anagrafica Studenti, una anagrafica Corsi ed una Anagrafica Materie. Uno studente può frequentare più corsi ed un corso ovviamente avere più materie.
    In una tabella Verifiche, ho inserito ID Studente, ID Corsi ed ID Materia, creando per ciascuno di questi una Combobox. Il problema è che al momento nella tabella verifica, posso assegnare a uno studente una verifica per una materia o un corso cui non è iscritto, mentre vorrei che una volta scelto lo studente, le altre due combo box mi permettessero di scegliere solo tra i corsi e le materie frequentati dallo studente. Se non sono stato chiaro posso inviare il database (occupa circa 1 Mb).
    Siccome sono alle prime armi potrei aver detto delle stupidaggini o sbagliato forum, in questo caso mi scuso.
    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  2. #2
    OscarJS
    Guest
    Si tratta di relazionare i dati tra di loro e fare delle select con join basate sul parametro di relazione, ovvero l'id dello studente associato alla tabella delle materie...

  3. #3
    oscar, io ho capito poco del 3d, ma non son certo che sia come pensi te !!!

    o mi sbaglio ??? [ innovatel ke ha una notte in bianco sulle spalle ]

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    GRazie per la risposta, ma non ho capito come devo operare. Potresti essere più chiaro? (tieni presente che sono VERAMENTE alle prime armi con i DB! ).

    Ho aggiunto in allegato un capture delle relazioni, giusto per aiutare a capire il problema.
    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    diciamo che avrei quasi risolto... Dopo aver fatto una query di selezione che visualizza tutti i campi interessati, l'ho messa come origine riga all'interno di una combo box nella maschera "verifiche". il problema è che ho altre due combo box da riempire, e visto che ciò che dovevo scegliere l'ho già scelto nella prima combo, ma le altre due mi servono perché tramite quelle viene riempita la tabella associata, vorrei far comparire in automatico i valori appropriati all'interno di queste ultime due (ID Corsi e ID Materia). A questo punto però dovrei cambiare forum, visto che probabilmente serve del codice in VB?

    non so se mi sono spiegato bene, spero di sì ma per favore aiutatemi!
    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  6. #6
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Innanzitutto devi stabilire che c'è una sequenza precisa con cui dovrai riempire le combo (magari nel nome delle combo metti anche il numero ordinale, tipo cmbStudente1, cmbCorso2, ecc...).

    Poi:

    1 - Fai in modo che l'origine dei dati di ciascuna combo sia una query che filtra i record interessati a seconda del valore che è stato scelto nella combo precedente.
    Per essere più chiaro, la combo "materie" dovrà elencare le materie del corso selezionato nella combo "corsi", ok?

    2 - ...ma non funziona ancora, perchè le combo vengono popolate all'apertura della maschera, mentre il contenuto dell'elenco deve cambiare ogni volta che cambia una delle combo precedenti, giusto?
    Quindi devi fare in modo che ogni volta che cambi un valore in una combo, devi fare un "requery" sulle combo che la seguono nella sequenza.

    3 - Ora una finezza necessaria: quando fai un "requery" su una combo, aggiorni effettivamente l'elenco a tendina, non il valore effettivamente contenuto nel campo. Quindi potresti trovarti che, selezionando ad esempio il corso "Ingegneria meccanica", nell'elenco del combo delle materie vedresti "Meccanica razionale" e "Disegno", ma poi il valore contenuto potrebbe essere ancora "Storia Medievale", perchè prima il corso era "Lettere".
    Non so se sono stato chiaro, ma quello che volevo dirti riassumendo è: tutte le combo seguenti nella sequenza vanno impostate a NULL.

    A disposizione!

    Ciao!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    Grazie Longline sei stato strepitoso .
    Tra le altre cose il DB Soluzioni (di cui, ahimè, ignoravo l'esistenza fino a un'ora fa ) risolve questo problema adottando la tua stessa soluzione...
    Dimmi solo una cosa... Quando intendi che tutte le combo seguenti nella sequenza vanno impostate a NULL, intendi dire che il valore "abilitato" deve essere su "no"? (sempre citando dal DB soluzioni)...

    Grazie e Ciao!
    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  8. #8
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Originariamente inviato da Pablob
    Dimmi solo una cosa... Quando intendi che tutte le combo seguenti nella sequenza vanno impostate a NULL, intendi dire che il valore "abilitato" deve essere su "no"? (sempre citando dal DB soluzioni)...
    No.
    "Abilitato" è una proprietà del'oggetto ComboBox.

    La faccenda è un po' diversa. La Combo è un oggetto o meglio, nel dialetto di Access, un controllo. Esso ha metodi (che sono azioni che può eseguire) e proprietà (che sono caratteristiche e valori ad esso associati).
    Una di queste proprietà è il valore vero e proprio che contiene quella Combo, nel tuo caso ad esempio il codice che identifica una materia o un corso. Ma un altra proprietà è anche la query che ti genera l'elenco nella tendina!

    E quindi se magari nella combo "cmbCorso2" hai "Medicina" oppure il codice che corrisponde a "Medicina", magari nella Combo "cmbMateria3" potresti avere "Neurologia", ok?

    Se però cambi il valore di "cmbCorso2" da "Medicina" a "Ingegneria" quello che succede facendo requery su "cmbMateria3", è che cambia l'elenco delle materie nella tendina, e quindi avrai "Meccanica razionale", "Analisi 1" ecc, chiaro?

    Il fatto è che, anche se le materie nella tendina sono cambiate, il valore che è effettivamente contenuto nella Combo è ancora "Neurologia"! E la cosa capisci che non va bene ...

    Quindi bisogna togliere "Neurologia" dai piedi. Solo che non puoi (o non vuoi ) avere automaticamente una materia di Ingegneria, quindi metti nella "cmbMateria3" il valore NULL, che significa NESSUN VALORE.

    Tutto ok?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    OK. Concettualmente è chiarissimo. Spero solo che una volta tanto tra il dire e il fare non ci sia di mezzo il fatto che forse dovrei dedicarmi prima alle cose + semplici! (non è nemmeno un mese che ho cominciato a studiare access ).

    Beh comunque sei stato gentilissimo.
    Gracias.
    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  10. #10
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Re: Scusa il disturbo

    quote:
    --------------------------------------------------------------------------------

    longline ha scritto un messaggio il giorno 19-02-2002 10:34:

    quote:
    --------------------------------------------------------------------------------

    Pablob ha scritto un messaggio il giorno 19-02-2002 01:14:
    Detesto disturbarti ancora, ma sei l'unico che mi ha dato dei suggerimenti validi... Non riesco proprio a capire come fare la requery sulle combo (le query le ho fatte e funzionano, ma come avevi previsto tu vanno bene solo per il primo inserimento e se non commetto errori, dopodiché dal 2° inserimento in poi sia COrsi che MAterie restano bloccati sulle stesse opzioni [l'ordine di selezione è Studente - Corso - Materia].
    Potresti darmi qualche indicazione?

    --------------------------------------------------------------------------------



    Posso risponderti sul forum? Penso che queste cose potrebbero essere utili a molti, il forum serve a questo, no?

    Ciao.

    --------------------------------------------------------------------------------



    Certo che puoi! Cmq nel frattempo ho capito . Mi resta solo da capire come faccio a visualizzare il nome invece dell'ID nella Combo (di solito cambiavo formato/larghezza righe mettendo 0 in quella dell'ID, ma in questo modo poi le query vanno a farsi benedire)...

    P.S.: ho risposto qui perché vado di fretta, se devi rispondere ancora puoi incollare tutto nel Forum (oppure lo faccio io quando torno ... stasera).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.