>nella casella di riepilogo. E qui sta il problema perchè il report non
>contiene dati, cioè interpreta le scelte della casella di controllo
>come se fosse impostato un valore Null.
allora, una listbox a selezione multipla dispone dell'insieme
ItemSelected, che e' un array che contiene i valori delle colonne
associate selezionate.
quindi disponi solo di un campo, che converrebbe sia la chiave.
con questa ti puoi creare una tabella temporanea da passare al report.
vediti anche la proprieta' selected.
======================================================
non vi offendete se non rispondo ad email di
richieste tecniche. piuttosto postatele sul ng!
======================================================
my opinions do not necessarily have to be true.
======================================================
per rispondermi rimuovere NOSPAM. dall'indirizzo email
to answer me remove NOSPAM. from email address
======================================================
Purtroppo l' inesperienza mi impedisce di raggiungere il mio obiettivo
e mi ritrovo ancora al punto di partenza.
Il mio problema č questo: attualmente utilizzo un pulsante che sull'
evento "click" fa riferimento ad una macro che apre il report in
questione contenente i dati riportati nella casella di riepilogo
seguendo la condizione WHERE.
Fin qui tutto procede bene perchč la casella di riepilogo č impostata
su selezione singola. Volendo passare ad una impostazione multipla non
posso utilizzare il procedimento su descritto perchč in questo caso la
condizione WHERE mi restituisce un valore Null ed il report appare
vuoto.
Ho capito che non posso usare i comandi della macro "ApriReport"
specificando la condizione WHERE per ottenere ciň che voglio.
Quindi: come e cosa devo creare per utilizzare l' insieme ItemSelected
che mi consente di generare un elenco di dati da utilizzare per creare
una tabella temporanea che costituisca l' origine dati per il Report
interessato?
Veniam peto per la mia richiesta, e ringrazio fin d' ora.
On Tue, 13 Oct 1998 19:20:25 GMT, l...@NOSPAM.iol.it (Lbo da casa )
wrote:
>>Perň, considerato che le caselle di riepilogo possono essere impostate
>>con la possibilitŕ di effettuare selezioni multiple, vorrei usare
>
>>nella casella di riepilogo. E qui sta il problema perchč il report non
>>contiene dati, cioč interpreta le scelte della casella di controllo
bella domanda. forse e' meglio che cominci dalla base, non sara'
breve ma spero che sia chiaro. di sicuro non e' difficile.
allora, una listbox puo' mostrare piu' colonne (campi), ma solo una e'
la colonna legata, ovvero la colonna che contiene il valore che la
listbox ritornera' ("immagazzinera'" una volta cliccata).
la colonna legata e' una delle proprieta' della listbox che si settano
o da tabella proprieta' o da codice.
ad es. prendiamo una listobx con un elenco del genere:
Nome Cognome Telefono
---------------------------------
Mario Rossi 112233
Gino Verdi 123123
Ida Bianchi 3322
supponiamo che la terza colonna (Telefono) sia quella legata.
supponiamo di fare clic sulla seconda riga, quella di Gino. dopo aver
fatto clic succedono diverse cose, due sono quelle che ci interessano.
una e' che avviene l'evento dopoaggiornamento della listbox, l'altra
e' che la listbox "assume" il valore "123123", perche' la colonna
legata e' appunto la terza.
ora, supponiamo che la listbox sia a selezione multipla, e che si sia
cliccato su Mario e Ida. l'array ItemSelected avra' due elementi
(quindi ubound=1 e lbound=0 perche' si comincia a contare gli elementi
da zero - ubound e' il massimo indice, lbound il minimo), elementi che
saranno "112233", "3322".
come puoi usare questa lista di numeri di telefono per creare una
tabella temporanea? non puoi, in realta', perche' non potrai mai
essere sicuro che qualcuno della tua lista non abbia lo stesso numero
di telefono di qualcun altro (ovvero forse potresti, ma per il momento
facciamo conto di no, e comunque se non volessi stampare uno dei
"doppioni" non potresti farlo). stesso dicasi per i cognomi ecc.
quinsi occorre un campo che sia unico per ognuno dei record nella
lista, una cosiddetta chiave. potresti ad esempio indicare il codice
fiscale dei tizi o magari semplicemente numerarli progressivamente.
in questo caso avrai un campo che identifica uno ed un solo record.
questo campo deve essere incluso nella listbox. ora, e' bruttino
avere una listbox con una colonna di codici fiscali o di numeretti
progressivi, e allora cosa si fa? si dice alla tabella delle
proprieta' della listbox che quella colonna ha larghezza zero, tanto
alla proprieta' colonna legata della larghezza della colonna non glie
ne frega niente.
quindi a questo punto potremmo avere un array (elenco) di chiavi
univoche, e potremmo usarlo per costruirci una tabella temporanea dei
record prescelti.
supponendo di avere gia' pronta in struttura la tabella temporanea, un
modo potrebbe essere (traggo ispirazione dall'esempio dell'help di
ItemSelected che ti consiglio caldamente di leggere):
dim rstTemp as recordset
dim rstOrig as recordset
dim fld as field
dim v as variant
dim i as integer
set rstTemp=currentdb.openrecordset("TblTemp")
set rstOrig=currentdb.openrecordset("TblOriginale")
docmd.runsql "delete * from TblTemp"
for each v in me!listbox.itemselected
set rstOrig=currentdb.openrecordset("select * from tblOrig where
Campochiave=" & v)
for each fld in rstTemp.fields
rstTemp(fld.name)=rstOrig(fld.name)
next fld
next v
a questo punto dovresti avere TblTemp pronta per essere usata come
sorgente dati (recordsource) del report.
un altro modo, piu' lento in esecuzione (ma tanto non ce ne
accorgeremmo...) e comunque non molto consigliato se fai molte
selezioni, potrebbe essere quello di usare una query con IN.
dim sI as string
dim rst as recordset
for each v in me!listbox.itemselected
sI=sI & v & ","
next v
sI=left(sI, len(sI)-1) ' tolgo l'ultima virgola
set rst=currentdb.openrecordset("select * from Tabella
where Chiave IN (" & sI & ")")
rst lo puoi usare come recordsource del report.
>Veniam peto per la mia richiesta, e ringrazio fin d' ora.
ehm, i peti magari da un'altra parte, grazie... :-)
On Tue, 13 Oct 1998 19:20:25 GMT, l...@NOSPAM.iol.it (Lbo da casa )
wrote:
>>Però, considerato che le caselle di riepilogo possono essere impostate
>>con la possibilità di effettuare selezioni multiple, vorrei usare
>
>>nella casella di riepilogo. E qui sta il problema perchè il report non
>>contiene dati, cioè interpreta le scelte della casella di controllo
>>come se fosse impostato un valore Null.
>
>allora, una listbox a selezione multipla dispone dell'insieme
>ItemSelected, che e' un array che contiene i valori delle colonne
>associate selezionate.
>
>quindi disponi solo di un campo, che converrebbe sia la chiave.
>
>con questa ti puoi creare una tabella temporanea da passare al report.
>
>vediti anche la proprieta' selected.
>