Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[REQ] Ottenere in VBA la selezione di un menu a tendina e di una casella combinata

778 views
Skip to first unread message

MT

unread,
Jul 7, 2008, 4:20:52 AM7/7/08
to
ciao,
ho questo problema, spero che qualcun* possa darmi uan mano
uso access 2000.

in una maschera ho un menu a tendina chiamato committente i cui valori
vengono definiti da una Rowsource.
QUalcosa tipo: me.committente.rowsource = "select n1,n2,n3 ecc.. "

Prima domanda: vorrei prendere da uno script VBA il valore selezionato.
Se faccio me.committente.value non ottengo quello che vedo nella tendina
ma n1. Come fare?


Altra questione. Nella stessa maschera ho una casella combinata. Tramite
lo stesso script VBA vorrei prendere tutte le righe.
Ho cercato di fare quello che è scritto qui:
http://www.sitocomune.com/forms/forms111.htm

Ma dice ceh ItemData non è uan sua proprietà

Cosa sbaglio?

Grazie.MT

Alessandro Baraldi

unread,
Jul 7, 2008, 5:07:13 AM7/7/08
to

Il controllo ha una colonna associata che è quella che ora prelevi di
Default.
Se vuoi leggere la colonna 2(con Indice 1) devi accedere all'Insieme
Column(Index)

Valore=Me.NomeCombo.Column(Indice)

@Alex

MT

unread,
Jul 8, 2008, 3:22:21 AM7/8/08
to
Alessandro Baraldi ha scritto:
> Il controllo ha una colonna associata che č quella che ora prelevi di

> Default.
> Se vuoi leggere la colonna 2(con Indice 1) devi accedere all'Insieme
> Column(Index)
>
> Valore=Me.NomeCombo.Column(Indice)
>
> @Alex

ciao
non va, o forse sto sbagliando qualcosa.

l'origine dati della mia combobox č:
SELECT Nominativi.Num, [Nominativo] & ", " & [via] & " - " & [CAP] & " "
& [citta] & " (" & [PR] & ")" AS Espr1
FROM Nominativi
ORDER BY Nominativi.Nominativo;

questo fa sě che se seleziono dal menu a tendina un
Mario Rossi, Via Marco Aurelio - 00100 Roma
che nel database Nominativi ha come NUM 100
se chiedo: Committente = Me.Committente.Column(0)

Mi dice che Committente č 100

se chiedo: Committente = Me.Committente.Column(1) mi dice che il valore
non č valido.

Come posso fare?

MT

Carlo Costarella

unread,
Jul 10, 2008, 4:33:49 AM7/10/08
to

"MT" <m...@mt.it> ha scritto nel messaggio
news:Elkck.12408$f86....@tornado.fastwebnet.it...

> ciao,
> ho questo problema, spero che qualcun* possa darmi uan mano
> uso access 2000.
>
> in una maschera ho un menu a tendina chiamato committente i cui valori
> vengono definiti da una Rowsource.
> QUalcosa tipo: me.committente.rowsource = "select n1,n2,n3 ecc.. "
>
> Prima domanda: vorrei prendere da uno script VBA il valore selezionato.
> Se faccio me.committente.value non ottengo quello che vedo nella tendina
> ma n1. Come fare?

Menù a tendina? Forse una combobox?
Se si tratta di una combo controlla quanto segue:
Origine controllo = vuoto
TipoOrigine = Tabella/Query
Origine riga = TuaSelect
qui cambiala così perchè la tua è scritta male:


SELECT Nominativi.Num, [Nominativo] & ", " & [via] & " - " & [CAP] & " " &

[citta] & " (" & [PR] & ")" AS Generalita FROM Nominativi ORDER BY
Nominativi.Nominativo;

Numero di colonne = 2
Colonna associata = 1 (se vuoi che restituisca il Num, altrimenti 2)
Larghezza colonne = 0;7 (se non vuoi mostrare la colonna Num)

Esempio di codice per estrarre il valore Num (ovviamente dopo aver
valorizzato la combo):
MsgBox Me.Committente

Esempio di codice per estrarre la seconda colonna:
MsgBox Me.Committente.Column(1)

>
> Altra questione. Nella stessa maschera ho una casella combinata. Tramite
> lo stesso script VBA vorrei prendere tutte le righe.
> Ho cercato di fare quello che è scritto qui:
> http://www.sitocomune.com/forms/forms111.htm
>
> Ma dice ceh ItemData non è uan sua proprietà
>
> Cosa sbaglio?
>
> Grazie.MT

Qui finalmente parli di "casella combinata"...
La proprietà ItemData esiste per le combo ma richiede un numero di indice.
Per farti
un esempio metti un pulsante sulla maschera e sull'evento click scrivi:
Dim i As Integer
For i = 1 To Me.Committente.ListCount
MsgBox Me.Committente.ItemData(i - 1)
Next i
Otterrai tanti msgbox per quante sono le righe della combo.
Da questo ne potrai dedurre un codice per scorrere l'elenco e restituire
ogni singolo valore.
Altra strada è quella di aprire un recordset basato sulla stessa select che
alimenta la combo e, via codice, ne fai quello che vuoi.

Ciao, Carlo


0 new messages