Casella riassume valori selezionati di listbox

di il
8 risposte

Casella riassume valori selezionati di listbox

Buon giorno,
ho una listbox con selezione multipla semplice di valori solo numerici e interi. Affianco ho una casella che vorrei mi riepilgasse i valori slezionati nella lst, intervallati da "Or". Ad esempio, se seleziono il valore 1 e il valore 2, allora nella casella mi deve comparire : 1 Or 2
Quale funzione uso? Come la imposto?

PS. la lst pesca da un campo numerico di una query, che a sua volta lo pesca da una tabella 8con nome del campo omonimo)

Nomi:
Query1
lst1
Campo1 (campo nella query, omonimo della tabella)
tb1

Grazie mille!

8 Risposte

  • Re: Casella riassume valori selezionati di listbox

    Se spieghi meglio cosa devi ottenere magari ... perchè se vuoi ottenere una stringa di FILTRO la sintassi che hai chiesto non è corretta, se invece ti basta l'elenco ai fini di visualizzazione va bene.

    Si tratta di ciclare l'array ItemsSelected e di concatenare ogni iterazione con OR.
    Quì trovi un esempio per ottenere una stringa di FIltro con la [,] come separatore, nel tuo caso basta modificare con [OR]
    http://forum.masterdrive.it/access-79/filtro-parametri-99938/
  • Re: Casella riassume valori selezionati di listbox

    Salto direttamente alle conclusioni per farla breve.
    Tutto quel che ho raccontato prima è da buttar via perché mi accorgo che la metodica non era ortodossa.
    Quel che voglio ottenere è esattamente come è nel db di cui il link qui sotto. Si tratta di un database creato proprio da lei, se non sbaglio.
    Vorrei appunto che la mia listbox mi consentisse di selezionare più valori e in base ai valori selezionati , questi mi fungano da filtro per un campo di un report, che aprirò nell' istante dopo. Listbox e report hanno la stessa query di origine, e il campo di questa è lo stesso a cui si connette lacasella nel report.
    Come modifico i codici?
    http://forum.masterdrive.it/attachments/access-79/1522d1361969702-listbox-selezione-multipla-estesa-per-filtrare-form-listbox_multiselectfilter.zip

    Spero non valga come crosspost, volevo solo condividere il file senza rimetterlo su un Cloud.

    Ringrazio molto per l aiuto
  • Re: Casella riassume valori selezionati di listbox

    Guarda questo esempio credo possa fare al caso tuo:
    http://forum.masterdrive.it/access-79/listbox-selezione-multipla-estesa-per-filtrare-form-73537/
  • Re: Casella riassume valori selezionati di listbox

    La ringrazio molto per il tempo dedicatomi.
    Ho aperto il file ed è lo stesso che ho postato nel post precedente. Parlavo proprio di quel file, che però filtra un campo appartenente a una maschera (la stessa maschera). La mia domanda era se fosse possibile fare lo stesso ma con un report (perchè come ultima frase lei scrisse che sarebbe stato possibile fare lo stesso con openreport)

    Buona serata

    Jibi
  • Re: Casella riassume valori selezionati di listbox

    Apri il report con OpenReport e passa la WHERE CONDITION che ricavi dal codice.
    Il demo è molto banale.... e se provi a ragionarci e guardare come lavora ci devi riuscire.
  • Re: Casella riassume valori selezionati di listbox

    Perfetto Grazie mille!!!!!
  • Re: Casella riassume valori selezionati di listbox

    Buona sera,
    commento questo argomento ormai datato perchè purtroppo si è verificato un problema con i codici. Ho creato un altro argomento per discutere di ciò ma purtroppo non ne sono venuto a capo, quindi ho deciso di scrivere qui, dove è stato postato per la prima volta il codice.
    Faccio riferimento al db che mi è stato passato tramite link da @Alex in cui una maschera veniva filtrata dalla selezione dei valori in una listbox. Apllicando i consigli datimi ho rifatto lo stesso non con una maschera ma con un report. Purtroppo se apro il report tramite pulsante da maschera, con quei codici, si genera errore 2501 e mi evidenzia la riga dell openreport. Non ne sono venuto a capo. Cosa ho sbgaliato?
    Il report ha dei codici su Attivato e Su apertura, poi ha un sottoreport che ha codici su Caricamento.

    Repilogo brevemente il problema. Ho una maschera mDati che si apre in modo normale; in questa c'è un pulsante che mi apre mStampa in dialogo. Qui ho una listbox con selezione multipla semplice (lst_anno). In questa seleziono dei valori numerici interi, e in base ai valori selzionati filtro il report che vado ad aprire consecutivamente tramite bottone da maschera mStampa.

    Ecco i nomi che non ho già citato:
    lst_anno è collegata al campo "anno" di Query_calcoli. La stessa query è collegata al già citato report, che possiede una casella (nel corpo) con nome "anno", collegata anche lei al campo "anno" della suddetta query.

    Questo è il codice del bottone che fa partire la stampa (si trova in mStampa):
    Private Sub cmdStampa_Click()
        Dim strItems As String
        strItems = FillItems(Me.lst_anno)
        If Len(strItems) > 0 Then
            If Me.FilterOn = True Then Me.FilterOn = False
            Me.Filter = "anno IN (" & strItems & ")"
            Me.FilterOn = True
        End If
        DoCmd.OpenReport "carta", acViewPreview, , Me.Filter
    End Sub
    
    Private Function FillItems(lst As Access.ListBox) As String
        Dim varItem As Variant
        Dim strItems As String
        
        For Each varItem In lst.ItemsSelected
            strItems = strItems & lst.Column(0, varItem) & ","
        Next
        If Len(strItems) > 0 Then strItems = Mid$(strItems, 1, Len(strItems) - 1)
        FillItems = strItems
    End Function

    questi sono i codici che si trovano nel main report (che deve essere filtrato):
    Private Sub Report_GotFocus()
    On Error GoTo Macro3_Err
    
        DoCmd.RunCommand acCmdPrint
    
    
    Macro3_Exit:
        DoCmd.RunCommand acCmdCloseWindow
        DoCmd.Close acReport, "carta"
        Exit Sub
    
    Macro3_Err:
        Resume Macro3_Exit
    DoCmd.RunCommand acCmdCloseWindow
    DoCmd.Close acReport, "carta"
    End Sub
    
    
    Private Sub Report_Open(Cancel As Integer)
    If Len(Forms("mStampa").Name) > 0 Then
        Me.Grafico.Visible = Forms!mStampa!chkGrafico
        Me.PièDiPaginaReport.Visible = Forms!mStampa!chkGrafico
    End If
    If Len(Forms("mStampa").Name) > 0 Then
        Me.SezioneIntestazionePagina = Forms!mStampa!chkRiepilogo
        Me.Corpo.Visible = Forms!mStampa!chkRiepilogo
    End If
    End Sub
    
    Questo è il codice nel sottoreport:
    Private Sub Report_Load()
    Testo176.Visible = (nome_ogg = "Strumento portatile")
    Testo131.Visible = (nome_ogg = "Strumento portatile")
    Testo183.Visible = (nome_ogg = "Strumento portatile")
    Testo87.Visible = (nome_ogg = "Portale A") Or (nome_ogg = "Portale B")
    Testo185.Visible = (nome_ogg = "Portale A") Or (nome_ogg = "Portale B")
    Testo140.Visible = (nome_ogg = "Portale B") Or (nome_ogg = "Portale A")
    End Sub
    Non ho davvero idea di come risolvere questo problema. Il report non si apre..
    L'unica cosa che sono riuscito a ottenere è che se io creo un nuovo report e ci sposto tt i controlli, allora questo si apre la prima volta se lo apro senza usare il filtro; quando poi lo apro con il filtro, mi dà errore e me lo dà anche le volte successive (anche se non uso più il filtro per aprirlo).

    Vi ringrazio per l'ascolto


    Link al db:

    Jibi
  • Re: Casella riassume valori selezionati di listbox

    jibi ha scritto:


    commento questo argomento ormai datato perchè purtroppo si è verificato un problema con i codici. Ho creato un altro argomento per discutere di ciò ma purtroppo non ne sono venuto a capo,
    No, o l'argomento si tratta qui o nell'altro thread, che per completezza riporto io.
    https://www.iprogrammatori.it/forum-programmazione/access/errore-apertura-report-anteprima-stampa-t34808-15.html
Devi accedere o registrarti per scrivere nel forum
8 risposte