[RISOLTO] Problema con operatore OR su multifiltro

di il
35 risposte

35 Risposte - Pagina 2

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    29/04/2024 - surfgarden ha scritto:


    If Me!cboDR.Value = "detraibili" Then strWH = strWH & "detraibili=-1" & " AND " & "rimborsabili=0" & " AND "

    un'altra cosa… cerca sempre di snellire.

    If Me!cboDR.Value = "detraibili" Then 
       strWH = strWH & "detraibili=-1 AND rimborsabili=0 AND "

    concatenare n stringhe che scrivi da codice non ha senso: si concatenano valori che non conosci tipo: & edit.text & combo.value ecc…

    tu sai che al filtro detraibili il filtro è “detraibili=-1 and rimborsabili=0” perchè lo scrivi tu, non lo ricavi da scelte dell'utente che non conosci.

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    Sifone ha fatto la stessa osservazione…

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - sihsandrea ha scritto:


    30/04/2024 - surfgarden ha scritto:


    Anche se uso access da anni, mettendo mano una decine di volte l'anno, col vba sono meno che principiante. 

    Speravo in un problema/soluzione  più semplice

    Aggira l'ostacolo: associa la combo di scelta ad una combo (nascosta) con la striga filtro (magari caricate da file o tabella settaggi per future manutenzioni o implementazioni di filtro)

    • tutti (non filtrato)                                                                           =====>>>> combo2: ‘’
      - detraibili (non rimborsabili)                                                      =====>>>> combo2: "detraibili=-1 AND rimborsabili=0"
      - rimborsabili (non detraibili)                                                      =====>>>> Combo2: ecc…
      - detraibiliPlus (anche se rimborsabili)
      - rimborsabiliPlus (anche se detraibili)
      - entrambi (solo detraibili e rimborsabili)
      - entrambiMinus (solo detraibili o solo rimborsabili)
      - nessuno (tutti i record con i due campi non flaggati)

    funziona come un array: ha un indice ed un valore.

    combo2.ItemIndex=Combo1.ItemIndex (o come lo vuole scritto access)

    strWH = combo2.item(combo1.ItemIndex)

    per l'anno usa una variabile datetime.

    Ti ringrazio per tutti i suggerimenti. Ma non sto cercando soluzioni alternative, imparando nuove cose in VBA, che mi richiederebbero giornate di studio che non posso permettermi.

    Uso i pochi strumenti che conosco sui db che ho creato anni fa, cercando, quando modifico qualcosa e vedo che non funziona, di capire il problema. Poi..dopo che hanno chiuso MD, ho perso tutti i miei 3d di riferimento, e mi sono demoralizzato.

    Nel caso specifico, sarà un filtro che uso raramente. Ripeto..inserisco l'intervallo nelle due txt DataInizio e DataFine, e il problema è già aggirato in modo ultra semplice.

    Il mio più grande errore e lacuna, che mi porto dietro da anni, è quello di non essermi mai dedicato ad imparare ad usare lo strumento Debug, che è l'ABC per imparare il VBA.

    Grazie comunque

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - sihsandrea ha scritto:


    29/04/2024 - surfgarden ha scritto:


    If Me!cboDR.Value = "detraibili" Then strWH = strWH & "detraibili=-1" & " AND " & "rimborsabili=0" & " AND "

    un'altra cosa… cerca sempre di snellire.

    If Me!cboDR.Value = "detraibili" Then 
       strWH = strWH & "detraibili=-1 AND rimborsabili=0 AND "

    concatenare n stringhe che scrivi da codice non ha senso: si concatenano valori che non conosci tipo: & edit.text & combo.value ecc…

    tu sai che al filtro detraibili il filtro è “detraibili=-1 and rimborsabili=0” perchè lo scrivi tu, non lo ricavi da scelte dell'utente che non conosci.

    Ne sono convinto. Quel metodo di impostare il multifiltro l'ho appreso da Alex anni fa in un certo contesto, e me lo porto dietro pari pari ovunque. Funziona sempre, e lo uso così. Capisco che magari vado in salita col freno a mano tirato, (..e infatti, per esempio, non avevo tolto l'inutile condizione …And Me!txtDataFine.Value <> "".. dalle txt.. ma devo rassegnarmi alle mie possibilità e tempo.

    Anche per questo, quasi sempre, ci penso dieci volte prima di chiedere aiuto…

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    Hai mostrato la stringa come ti è stato chiesto? 

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - oregon ha scritto:


    Hai mostrato la stringa come ti è stato chiesto? 

    No..non riesco a fare il debug.print correttamente

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - Stifone ha scritto:


       .....
       else
           Me.Filter = Mid$(strWH, 1, Len(strWH) - 5)
           Me.FilterOn = True
       End If

    L' End If non si mette in questo multifiltro. 

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - surfgarden ha scritto:


    No..non riesco a fare il debug.print correttamente

    Ma che vuol dire? Non ci vuole molto

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - oregon ha scritto:


    30/04/2024 - surfgarden ha scritto:


    No..non riesco a fare il debug.print correttamente

    Ma che vuol dire? Non ci vuole molto

    Si, ma non l'ho mai fatto. Ricordo anni fa che mi era stato insegnato  con un esempio, inserendo un ciclo in un modulo, e vedendo poi che avviene nella finestra immediata.

    Anche le cose più banali, se non le fai mai, devo impararle. 

    Nel frattempo stavo rispondendo a tutti per gratitudine le gentilezza.

    Torno sul web a cercare come si fa. Anzi, se volete segnalarmi un link per apprenderlo più rapidamente, evitandomi il coacervo del web, ve ne sarei grato

    Grazie anche a te

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    Ma scusa prima di assegnare la stringa al filtro inserisci la linea 

    Debug.Print strWH

    e usa il programma selezionandoi criteri con la OR. Alla fine controlla la finestra Immediata e dicci cosa vedi  

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - oregon ha scritto:


    Ma scusa prima di assegnare la stringa al filtro inserisci la linea 

    Debug.Print strWH

    e usa il programma selezionandoi criteri con la OR. Alla fine controlla la finestra Immediata e dicci cosa vedi  

    per prima di assegnare la stringa al filtro.. Intendi qui: ?

    …
      Debug.Print strWH
      If Len(strWH) <> 0 Then strWH = Mid$(strWH, 1, Len(strWH) - 5)
      Me.Filter = strWH
      Me.FilterOn = True
    End Sub

    Se apro l'editor VB con aperta la finestra immediata, e seleziono dalla maschera il valore con OR dalla cboDR,  la maschera mi restituisce il solito risultato.

    Post modificato!

    mentre sulla finestra immediata mi appare: 

    Year(Data) = 2024 AND (detraibili=-1 AND rimborsabili=0) OR (rimborsabili=-1 AND detraibili=0) AND 

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - surfgarden ha scritto:


    mentre sulla finestra immediata mi appare: 

    Year(Data) = 2024 AND (detraibili=-1 AND rimborsabili=0) OR (rimborsabili=-1 AND detraibili=0) AND 

    …invece, per funzionare correttamente, forse dovrebbe apparire:

    Year(Data) = 2024 AND ((detraibili=-1 AND rimborsabili=0) OR (rimborsabili=-1 AND detraibili=0)) AND 

    oppure

    Year(Data) = 2024 AND (detraibili=-1 AND rimborsabili=0) OR  Year(Data) = 2024 AND  (rimborsabili=-1 AND detraibili=0) AND 

    giusto ?

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    La Debug.Print deve essere

     Debug.Print Mid$(strWH, 1, Len(strWH) - 5)

    per capire effettivamente cosa passi ed esaminare bene la stringa

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    30/04/2024 - oregon ha scritto:


    Debug.Print Mid$(strWH, 1, Len(strWH) - 5)

    Taglia la parte finale!  manca    li=0)  AND

  • Re: [RISOLTO] Problema con operatore OR su multifiltro

    Forse sei confuso ma perche hai cambiato la riga

    Me.Filter = …

    E che vuoi dire con idem? LLa parte finale è ovviamente diversa.

    Poi NON postare immagini, non si vede nulla.

    Copia la stringa e copiata qui  

Devi accedere o registrarti per scrivere nel forum
35 risposte