Newsgroup: it.comp.appl.access
Titolo: casella di riepilogo scelte multiple

sono finalmente riuscito a capire come utillizzare una casella di riepilogo
ma .... ancora non riesco ad utilizzare la proprieta selezione multipla
quando l'attivo in modalita' semplice mi restituisce questo errore :ERRORE
RUN TIME 94 UTILIZZO NON VALIDO DI NULL
percaso qualcuno saprebbe spiegarmi il motivo
la maschera e composta da :
una maschera origine tabella ore
una casella combinata non associata
una sottomaschera origine tabella ore
 grazie comunque

andy ha scritto:

L'errore sarà nel codice che legge i valori della casella di riepilogo,
non nella casella in sé. Forse la usi per costruire un filtro e non tieni
conto dei casi in cui non è stato selezionato nessun elemento?
Com'è il codice?
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:bnm6fn$ln$1...@news.newsland.it...


andy ha scritto:



Si scrive sempre DOPO al messaggio originale.
La function la puoi modificare così (quella che hai adesso nemmeno chiude
rs):
if not isnull(Me![Elenco59]) then
   me.recordsetclone.FindFirst "[ID] = " & Str(Me![Elenco59])
   if not me.recordsetclone.nomatch then
      Me.Bookmark = me.recordsetclone.Bookmark
   end if
end if
Per il fatto che ti dà errore dovresti controllare che la colonna
associata della casella corrisponda al campo ID della tabella "Ore" (che è
di tipo numerico, o no?).


 ha scritto nel messaggio
news:bnm8fp$gqu$1...@news.newsland.it...

Ciao grazie sto provando la function putroppo non mi funziona ancora ....
sto cercando comuque di capire dove sbaglio, una curiosita se invece della
sottomaschera con origine la tabella ore la sostituissi con una query con
origine tabella ore sarebbe possibile ottenere dei dati filtrati tipo:
seleziono milano e mi restituisce tutti i clienti quindi seleziono anche
bologna e mi aggiunge anche tutti i clineti di bologna ???? e si potrebbe
ottenere la stessa cosa anche come sta adesso con la sottomaschera con
origine tabella ore ???
grazie

 grazie
Ma allora hai bisogno di spostarti sul record selezionato nella
combo/listbox, o ti serve un filtro?
Il filtro viene meglio se fatto con la sottomaschera, così nella maschera
principale avrai la casella di riepilogo e nella sottomaschera vedrai
comparire i dati man mano che selezioni le città, però questo metodo
richiede la scrittura di una funzione che restituisca il filtro nella
forma "(valore1, valore2, valore3,...)" da applicare poi alla
sottomaschera (come filtro o direttamente come criterio nell'origine
dati). Dovrebbe esserci qualcosa sul 
www.sitocomune.com
 su come costruire
un filtro simile a partire da una listbox.


 ha scritto nel messaggio
news:bno1o0$n4$1...@news.newsland.it...

mi servirebbe un filtro tipo scelgo milano e restituisce tutti i clienti di
milano poi non sono contento vorrei vedere anche i clineti di bologna quindi
seleziono anche bologna e mi aggiunge anche i clineti di bologna sempre
nella stessa sottomaschera... e' possibile fare cio????
ho cercato nel sito 
www.sitocomue.it
 ma non ho trovato questo esempio o
qualcuno che si avvicini

 qualcuno che si avvicini
Il sito è 
www.sitocomune.com
Sezione reports, titolo "Come si può filtrare un report in base alla
selezione multipla effettuata su una casella di riepilogo?".
Non è immediatamente applicabile alle tue esigenze però ci trovi la
funzione che crea la lista degli ID selezionati in una listbox. Devi
cercare di capire come funziona, inserirla nella tua maschera ed usarla
per filtrare la sottomaschera (con l'operatore "In()").


 ha scritto nel messaggio
news:bno7s7$g5h$1...@news.newsland.it...

grazie ci stavo guardando proprio adesso .... e' parecchio complessa ma ci
provo .... io comunque esagero .... mi faresti un esempio secondo quello che
ti ho scritto te ne sarei grato

 ha scritto nel messaggio
news:bno81b$23l$1...@grillo.cs.interbusiness.it...

finalmete ci sono .... quasi ... sono riuscito a far aprire un form
filtrando i dati che mi servono anche selezionandone piu' di uno ....ora
pero vorrei che il form che sono riuscito ad aprire lo allegassi come
sottomaschera nella maschera stessa come posso fare ??

 sottomaschera nella maschera stessa come posso fare ??
Quindi hai già la funzione che a partire dalla listbox ti prepara la
stringa "(ID1, ID2, ID3,....)" per il filtro.
Allora basta che metti la form (quella da filtrare) come sottomaschera
della maschera principale, e al posto di docmd.openform metti una riga che
cambia l'origine record della sottomaschera, tipo questa:
Me.sottomaschera.form.recordsource=
"SELECT * FROM tabella WHERE ID In " & strFiltro & ";"
Non so se la funzione che costruisce il filtro mette già le parentesi,
altrimenti aggiungile tu, comunque la stringa finale che verrà assegnata
all'origine record della sottomaschera deve essere una query SQL valida,
per esempio:
"SELECT * FROM tabella WHERE ID In (1, 6, 8, 15, 12);"


 ha scritto nel messaggio
news:bnojdg$rld$1...@news.newsland.it...

scusa la mia iggnoranza ma potrebbe andare bene riporato cosi' ???
-----------------------------------------------------------------------
    Dim varItem As Variant
    If Me!Elenco.ItemsSelected.Count = 0 Then Exit Sub
    For Each varItem In Me!Elenco.ItemsSelected
        strLista = strLista & _
            Me!Elenco.Column(0, varItem) & ","
        Me!lista = Me!lista & _
            Me!Elenco.Column(1, varItem) & ", "
    Next varItem
    strLista = Left$(strLista, Len(strLista) - 1)
    Me!lista = Left$(Me!lista, Len(Me!lista) - 2)
    strCriteri = "[codice] IN (" & strLista & ")"
    Dim stDocName As String
    Me.report_ore1.Form.RecordSource = "SELECT * FROM ore WHERE ID In " &
strFiltro & ";"
    Dim Cont As Integer
    For Cont = 0 To Me!Elenco.ListCount - 1
        Me!Elenco.Selected(Cont) = False
    Next Cont
Exit_Comando5_Click:
    Exit Sub
Err_Comando5_Click:
    MsgBox Err.Description
    Resume Exit_Comando5_Click

Ci sono riuscito grazie ............non senza il tuo aiuto

     Me!lista = Left$(Me!lista, Len(Me!lista) - 2)
strFiltro non contiene le parentesi, quindi devi aggiungerle:
RecordSource = "SELECT * FROM ore WHERE ID In (" & strFiltro & ");"
Con queste modifiche la sub si riduce molto, prova se funziona e casomai
ripostala.


 ha scritto nel messaggio
news:bnomnc$mce$1...@news.newsland.it...

si funziona benissimo grazieeeeeeeeeeeee ho imparato molto ........secondo
te sarebbe possibile nella suddetta maschera mettere un controllo per
filtrare le date che ne so due campi data con la possibilita' di selezionare
se si vuol sapere quante ore ho fatto dal----- al ?????

 se si vuol sapere quante ore ho fatto dal----- al ?????
Si, dato che dalla form principale imposti direttamente il recordsource
della sottomaschera, nella sottom. ti resta disponibile la proprietà
"Filter".
Metti le due caselle nell'intestazione della sottom. e sugli eventi
afterupdate di ognuna costruisci il filtro (tenendo conto anche dei casi
in cui è presente una sola delle due date!) e lo assegni con Me.Filter=...
e Me.FilterOn=True.


 ha scritto nel messaggio
news:bnoran$mca$1...@news.newsland.it...

mi faresti un esempio

 mi faresti un esempio
Questa la metti come public sub nella form, e la richiami negli eventi
afterupdate di entrambe le tabelle.
dim Filtro as string
filtro=""
if not isnull(Me.dataDal) then filtro=" AND data>=#" &
format(me.datadal,#mm/gg/aaaa#) & "#"
if not isnull(Me.dataAl) then filtro=filtro & " AND data<=#" &
format(me.dataal,#mm/gg/aaaa#) & "#"
if len(filtro)>0 then 
  Me.filter=right(filtro,len(filtro)-5)
else
  me.filter=""
end if
Me.filteron=true



grazie la provo e ti dico


Ciao grazie per l'esempio ci sto lavorando sopra per capire come funziona
per ora buio assoluto .....

 afterupdate di entrambe le tabelle.
Ehm... di entrambe le "CASELLE" (le due textbox "dataDal" e "dataAl")!


 ha scritto nel messaggio
news:bo607q$24t$1...@news.newsland.it...

e' li che non ci arrivo cioe' ho creato una routine evento nella form
principale su caricamento ed ho incollato la tua routine ma mi mette in
rosso questa parte
    if not isnull(Me.dataDal) then filtro=" AND data>=#" &
    format(me.datadal,#mm/gg/aaaa#) & "#"
    if not isnull(Me.dataAl) then filtro=filtro & " AND data<=#" &
    format(me.dataal,#mm/gg/aaaa#) & "#"
perche????
mi sa che non ci arrivo .... ma ci sto provando

 mi sa che non ci arrivo .... ma ci sto provando
Te la segna in rosso perchè col copia-incolla dal ng gli if sono andati su
due righe. Il format non va a capo, va subito dopo il "&" (separato da uno
spazio).
E non va sull'evento caricamento della form principale.
Scrivi una sub FUORI dalle routine evento, e la metti nella sottomaschera,
non nella form principale:
Private sub Filtra()
  <corpo della routine>
End Sub
Nell'intestazione della sottomaschera ci metti due caselle che chiami
"dataDal" e "dataAl" e sugli eventi afterupdate di ognuna richiami la sub
Filtra:
Private sub dataDal_afterupdate
  Filtra
end sub
Namor
-- 
Aiuta chi ne ha bisogno, non ti costa niente:
http://www.shopmon.it/


 ha scritto nel messaggio
news:bo7p37$oqi$1...@news.newsland.it...

ok ho capito dove collocare la sub ma mi sfugge ancora qualcosa ti riporto
sotto la sub :
 Dim Filtro As String
    Filtro = ""
    if not isnull(Me.dataDal) then filtro= #AND data>=#" &
format(me.datadal,#mm/gg/aaaa#) & "#"
    if not isnull(Me.dataAl) then filtro=filtro & " AND data<=#" &
format(me.dataal,#mm/gg/aaaa#) & "#"
    If Len(Filtro) > 0 Then
    Me.Filter = Right(Filtro, Len(Filtro) - 5)
    Else
    Me.Filter = ""
    End If
    Me.FilterOn = True
le due righe if anora me le segna in rosso

 le due righe if anora me le segna in rosso
Questo non va:   filtro= #AND 
Deve essere:     filtro= " AND 
Questo non va:   #mm/gg/aaaa#
Deve essere:     "mm/gg/aaaa"
e i due format NON devono stare lě sotto, li devi riunire ciascuno al suo
if in modo che stiano sulla stessa linea del loro if:
if .... then .... data>=#" & FORMAT(...) & "#"
if .... then .... data<=#" & FORMAT(...) & "#"


 ha scritto nel messaggio
news:bo814o$mio$1...@news.newsland.it...

mi sa che ci sono l'unica cosa e' che quando provo dare un lasso di tempo mi
da questo errore
errore di sintassi nella data nell' espressione della query
'data>=#06/gg/aaaa# AND data<=#06/gg/aaaa#'

 'data>=#06/gg/aaaa# AND data<=#06/gg/aaaa#'
Ah sě, č vero, in vba non si puň usare "mm/gg/aaaa", bisogna usare la
versione english "mm/dd/yyyy".
Namor
-- 
Aiuta chi ne ha bisogno, non ti costa niente:
www.shopmon.it
  -  
www.porloschicos.com


 ha scritto nel messaggio
news:bo8du5$vb7$1...@news.newsland.it...

grande ora funziona ....... ancora una volta grazie
ora provo a fare delle combinazioni per vedere cosa mi viene fuori

[cut]
un altro quesito se volessi stampare il filtrato ????
ho provato immettendo direttamente un tasto nella sottomaschera con questa
sub
DoCmd.OpenReport "report_ore", acViewPreview, , "codice = " & codice

 ha scritto nel messaggio
news:bo8fba$qj1$1...@fata.cs.interbusiness.it...

:( non capisco ogni tanto mi da dei dati sbagliati quando filtro utilizzando
la sub sulla data a volte no filtra oppure riporta lassi di tempo errati
tipo io scrivo nalla box datada 01/10/2003 e nella box dataal 30/10/2003 e
mi riporta anche le date di agosto .... secondo te come mai fa cosi' ????

 mi riporta anche le date di agosto .... secondo te come mai fa cosi' ????
Perchè interpreta 01/10/2003 come 10 gennaio invece che primo ottobre.
Allora devi cambiare il formato da "mm/dd/yyyy" a "dd/mm/yyyy". Si vede
che la proprietà Filter delle maschere lavora con le date nel formato
locale delle "impostazioni internazionali", invece che con quello inglese
del vba.
Bisogna stare molto attenti alle date perchè in alcuni posti viene usato
il formato locale (in italia giorno/mese/anno) e in altri quello inglese
(mese/giorno/anno), in alcuni casi in italiano (gg/mm/aaaa) e altre volte
in inglese (dd/mm/yyyy). Nel caso di 30/10/2002 non ci sono problemi
perchè può essere interpretata in un modo solo. Fai sempre qualche prova
con date "ambigue" tipo 1/10/2003 o 4/7/2003, ecc... quanto devi testare
filtri e criteri.
Magari prima o poi qualche buon anima metterà sul sitocomune la mappa
delle date di Access, indicando dove vuole i formati locali e dove quelli
inglesi...


 ha scritto nel messaggio
news:bodghs$ok9$1...@news.newsland.it...

e' si speriamo che lo facciano sempre grazie
una curiosita e' possibile stampare il filtrato ottenuto dopo aver eseuito
un filtro sulle date ????

andy ha scritto:
[cut]

Rispondo qua perchè sull'altro post ho problemi.
Tu hai due filtri: uno nella SELECT origine dati della sottomaschera e
l'altro nella proprietà Filter.
O stampi direttamente la sottomaschera (con DoCmd.PrintOut acSelection), o
fai un report e sull'evento apertura gli assegni da vba la stessa origine
dati della sottomaschera e lo stesso filtro.


 ha scritto nel messaggio
news:bog48f$gs7$1...@news.newsland.it...

Mi sembra che il primo sia il piu' semplice ci provo

 ha scritto nel messaggio
news:bog48f$gs7$1...@news.newsland.it...

una curiosita' come mai lo stesso file sono sempre riuscito a convertirlo in
mde dopo le modifiche e' ora non riesco piu mi dice impossibile creare file
mde ???? forse se effettui un errore nel codice vb non lo converte in
seguito ??

 ha scritto nel messaggio
news:bogf18$4ir$1...@fata.cs.interbusiness.it...

Problema con le date risolto grazie

ciao  sono stato bloccato a letto un po causa brutta influenza e hanno
cancellato la tua risposta potresti ripostarla ???? il quesito era :
e' possibile stampare un filtrato dopo aver eseguito un ulteriore filtraggio
sulle date datadal dataal.
in oltre ti pongo un altro quesito sarebbe possibile dalla funzione su
apertura di una maschera aprirne un altra utilizado la funzione data ???? se
mi sono espresso male sorry .
sempre grazie di tutto