PDA

View Full Version : [ACCESS] Concatenare automaticamente due menu a tendina


younggotti
01-10-2005, 10:24
Ciao a tutti.
Sto creando un DB Access per lavoro
Devo creare una maschera che contenga due campi testo con menu a tendina:
- campo A) società
- campo B) dipendenti
e vorrei fare in modo che nella seconda tendina compaiano solo quei dipendenti collegati alla società che l'utente ha selezionato nella prima tendina.

Ho provato a fare così:
- il campo A) società è una casella combinata che ha come origine una semplice lista delle società
- il campo B) dipendente è una casella combinata che ha come origine una query (che filtra la lista dei dipendenti in base al campo A).

La maschera funziona, nel senso che se scelgo la società nel campo A, effettivamente nel campo B compaiono solo i suoi dipendenti. Il problema è che, se provo a scegliere un'altra società, il campo dipendenti non si aggiorna, a meno che non chiuda la maschera e la riapra.
L'unico modo che ho trovato per aggiornare il campo dipendenti senza uscire e rientrare dalla maschera è stato aggiungere un pulsante "Aggiorna maschera dati", ma io vorrei che l'aggiornamento del campo B fosse automatico e non manuale.

Scusate per il malloppone e grazie in anticipo :)

guldo76
01-10-2005, 15:10
Sull'evento "modifica" della Combo1 devi mettere un requery della Combo2.
Con una macro, o da codice.

younggotti
01-10-2005, 17:07
Sull'evento "modifica" della Combo1 devi mettere un requery della Combo2.
Con una macro, o da codice.

Ci avevo pensato anch'io ed ho provato tutte le macro possibili ma non ne ho trovata una che andasse. Quella che mi sembrava più adatta era "RieseguiQuery". Il problema è che la query, macro o non macro, in ogni caso si aggiorna immediatamente, mentre è la combo2 che non si aggiorna.

In quanto al codice non so proprio da dove iniziare :mc:

guldo76
01-10-2005, 18:41
Allora, supponiamo che la casella società si chiami cmbSoc, mentre la casella dei dipendenti cmbDip.
Se vai nelle proprietà di cmbSoc, alla scheda Evento, c'è la voce "Su modifica"; impostala a "[Routine evento]" (scelto dall'elenco). C'è il tastino dei puntini da parte, hai presente? Fai clic, e ti apre una finestra di codice con scritto:
Private Sub cmbSoc_Change()

End Sub
che tu cambi in questo modo:
Private Sub cmbSoc_Change()
cmbDip.Requery
End Sub
(Ctrl+Spazio per il completamento automatico)
Fatto.

(con le macro non saprei...)

bye

younggotti
02-10-2005, 10:38
Prima di tutto grazie per supportarmi sempre nelle mie peripezie con access :)

Ho provato ad usare il requery, ma niente :muro:

Non è che potresti dargli uno sguardo come l'altra volta? :ave:

guldo76
02-10-2005, 13:28
Non è che potresti dargli uno sguardo come l'altra volta?
Non ricordo di quale altra volta parli... :fagiano:
Cmq prova a upparlo/postarlo, e vediamo :)

younggotti
02-10-2005, 17:25
Ti avevo già chiesto consulenza per un altro DB.

Ecco il nuovo: http://img.freeforumzone.it/upload/475793_db società-dipendenti.rar

Comincio a pensare che il problema derivi dal fatto che le due entità non sono gerarchiche, ma sono collegate da una relazione molti a molti (una società ha più dipendenti, ma lo stesso dipendente può lavorare per più società) attraverso una tabella di congiunzione. Se mi trovi l'errore sei un grande!
Grazie ancora :)

guldo76
03-10-2005, 22:09
Eccomi, scusa il ritardo :D
Allora:
La tabella per memorizzare le scelte dell'utente NON ti serve nella query. La query l'hai fatta per associare i dipendenti alla rispettiva società, giusto? Bene, questo non riguarda la memorizzazione delle scelte dell'utente, non ti pare?
Quindi togli questa tabella dalla query.
Questa tabella ti serve come origine dati della maschera, ma non ti serve nella query.
Perché i dipendenti siano scelti in base alla casella società, devi aggiungere un filtro nella query; aggiungi il campo società della tabella società, e come criterio scrivi:
[Forms]![Maschera utente]![Società]
(lo puoi fare col tasto destro, "Genera", ma te lo scrivo che facciamo prima)
Non mostrare questa voce nella query (deseleziona "Mostra")
Ora vai sulla maschera, e come "origine riga" della casella Dipendente scegli semplicemente la query
Ultima cosa, seleziona la casella Società della maschera, vai nelle proprietà, scheda Evento, e... vedi messaggio #4 :D
Spero di non aver scordato niente.

bye

ufollettu
26-04-2009, 22:36
Salve a tutti, Sono nuovo del forum e approfitto per salutare prima di tutto. vi scrivo per chiedere un chiarimento sul database che sto creando per l'azienda in cui lavoro. la domanda riguadra il thread, perchè quello che voglio fare è molto simile:

già adesso il db funzionerebbe: apri la maschera di avvio e inserisci i dati da una parte, dall'altra ricerchi i record attraverso parametri preimpostati. vorrei però farci alcune modifiche:

nelle maschere di inserimento vorrei che una volta inserito un codice in una combobox appaia automaticamente nelle altre combobox della maschera anche il depositario e il centro sanità ed esso collegati (esempio: il codice "46f" corrisponde solo a "rossi (rm)" come depositario e solo a "roma" come centro sanità. se seleziono 46f mi dovrebbe quindi automaticamente compilare i campi depositario e centro sanità). questo per evitare errori di inserimento dati nelle tabelle - visto che non tutti conoscono i codici esatti- , il che sarebbe gravissimo.

Spero possiate aiutarmi, :help:

Grazie mille

Ciao