Newsgroup: it.comp.appl.access
Titolo: problema con stampa elenchi - da sitocomune

Ciao a tutti,
ho questo codice (preso dal sitocomune) che uso spessissimo ma solo ora mi
son accorto di un problema e non so se è legato al codice, ma non mi sembra,
o a Access in quanto tale...
Il codice permette di filtrare i record di una casella di riepilogo e aprire
un report contenente solo i record selezionati.
Il problema è che ha un limite nel numero di record. Se seleziono troppi
record quando clicco sul pulsante mi esce questo avviso: "Operazione per il
filtro annullata. Il filtro risulterebbe troppo lungo".
Che posso fare? Perchè accade? Qualcuno lo sa ?
Grazie moltissime.
Alessio
PS: quì di seguito ho messo il codice usato
 
          Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click
    Me!Lista = Null
    Dim strlista As String
    Dim strCriteri As String
    Dim varItem As Variant
    'Se non ci sono voci selezionate
    'non ci sono attività da effettuare
    If Me!elenco_cat_reg.ItemsSelected.Count = 0 Then Exit Sub
    'Cicla nell'insieme delle voci selezionate
    For Each varItem In Me!elenco_cat_reg.ItemsSelected
        'Cattura la colonna IDcavita di ciascuna
        'voce selezionata
        strlista = strlista & _
            Me!elenco_cat_reg.Column(0, varItem) & ","
        Me!Lista = Me!Lista & _
            Me!elenco_cat_reg.Column(1, varItem) & ", "
    Next varItem
    'Elimina la virgola eccedente
    strlista = Left$(strlista, Len(strlista) - 1)
    Me!Lista = Left$(Me!Lista, Len(Me!Lista) - 2)
    'Apri il Reportcavità filtrando sulle
    'Ragioni Sociali selezionate
    strCriteri = "[N_cat_regionale] IN (" & strlista & ")"
    Dim stDocName As String
    stDocName = "intervallo_vg"
    DoCmd.Close acForm, "ric_n_cat_fr", acSaveYes
    DoCmd.OpenReport stDocName, acViewPreview, , strCriteri
 
    'Deseleziona tutte le righe della casella di riepilogo
    Dim cont As Integer
    For cont = 0 To Me!elenco_cat_reg.ListCount - 1
        Me!elenco_cat_reg.Selected(cont) = False
    Next cont
 
Exit_Comando44_Click:
    Exit Sub
Err_Comando44_Click:
    MsgBox Err.Description
    Resume Exit_Comando44_Click
End Sub
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:140Z105Z48Z199Y...@usenet.libero.it...

Ciao Ale,
Riporto dall'help di Access:
Nota  La lunghezza massima dell'argomento Condizione WHERE è di 255
caratteri. Se si rende necessario immettere una proposizione SQL WHERE più
complessa e più lunga, utilizzare invece il metodo OpenReport dell'oggetto
DoCmd in Microsoft Visual Basic. È possibile immettere istruzioni con
proposizioni SQL WHERE contenenti fino a 32.768 caratteri in Visual Basic.
Credo che tu sia incappato in uno di questi casi.
Saluti
Cinzia

 ha scritto nel messaggio
news:140Z105Z48Z199Y...@usenet.libero.it...

Una variabile Stringa (nel tuo caso strlista e strCriteri) possono avere una
lunghezza massima di 64 KB.
La condizioneWHERE del metodo OpenReport (nel tuo caso strCriteri) è
costituita da una stringa SQL che può essere al massimo lunga 32.768
caratteri.
Sono sicuramente dei limiti, ma per superarli hai voglia a selezionare righe
nella casella di riepilogo. ;-)
Resta il fatto che non sono superabili tali limiti strutturali del metodo
OpenReport.
Potresti con la selezione multipla della casella di riepilogo crearti una
tabella temporanea che contenga un record per ogni valore che era
memorizzato in strlista scanditi da una virgola. Potresti eliminare il
filtro del report e quindi crearti una query in cui metti in Inner Join
l'attuale origine record del report con tale tabella, usando poi tale query
come nuova origine record del report.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Roberto e grazie ma sorge un problema...
Questa funzione la ho usata in piů o meno 30 maschere per aprire altrettanti
report... devo quindi crearmi tutto 30 volte? Posso limitare la selezione a
X record nella casella di riepilogo? In che modo?
Grazie.
Ale


 Ale
