Filtro maschera in base a dato esterno

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Filtro maschera in base a dato esterno

    Buongiorno Alex,
    ci ero arrivato anche io:

    Mailman ha scritto:


    ...
    
    	Dim strDataFiltro as String
            strDataFiltro = "Format(DATAtabDFda,'myyyy')=" & Me!cboMese & Me!cboAnno
            Me.Filter = strDataFiltro & "AND [MEMOtabDFlf] Is Null"
            Me.FilterOn = True
    
    Mi da pero' l'errore: "Tipi di dati non corrispondenti nell'espressione criterio". Facendo il debug sulla variabile strDataFiltro nell'impostazione del filtro trovo il seguente dato "Format(DATAtabDFda,'myyyy')=92022". Nelle due combo e' impostato settembre 2022, quindi la concatenazione della data e' corretta.
    Presumo che il problema sia nella formattazione del campo DATAtabDFda.
    Ho modificato il codice di Alex da mmyyyy a myyyy perche' avendo numerato i mesi da gennaio a settembre da 1 a 9 pensavo potesse creare problemi.
    ...
    Mi spieghi perche' se invece di formattare il campo "mmyyyy" lo formatto con "myyyy" non funziona?
    Ad ogni modo ho fatto come da te suggerito ma continua a darmi errore "Tipi di dati non corrispondenti nell'espressione criterio"
  • Re: Filtro maschera in base a dato esterno

    Pubblica un MINI esempio che ci guardo meglio... ma sei sicuro che il SECONDO CRITERIO Che hai aggiunto vada bene...?
    Sei certo abbia NULL come valore quel campo... o NullString...?

    Ma soprattutto valuta IsNull(...) ed Is Null... sono 2 cose differenti:
    https://www.techrepublic.com/article/learn-the-differences-between-is-null-and-isnull-in-access/
  • Re: Filtro maschera in base a dato esterno

    Scusa ho postato l'immagine sbagliata, di seguito la simulazione ultima. Il secondo criterio l'ho rimosso, come vedi sto testando solo la parte di codice suggerita.

    Domanda: la modalita' di memorizzazione in tabella del campo da filtrare puo' essere una discriminante? Sopra avevo postato anche l'immagine dell'impostazione del campo in tabella.
    Adesso provo a fare un test analogo in un db vuoto per capire e faccio errori io...
  • Re: Filtro maschera in base a dato esterno

    Scusa ma non dovrebbe essere
    
    sWhr = "Format(DATAtabDFda,'mmyyyy')=" & Chr(34) & Format(Me!cboMese,"00") & Me!cboAnno & Chr(34)
    
    
    ?
  • Re: Filtro maschera in base a dato esterno

    Con le date mi sono sempre incartato, quindi trndo sempre ad evitare di intervenire, pero shwr è dichiarata come stringa ed il debug riporta un numero.
    Inoltre non so se puo dar fastidio anche il fatto che il campo è in formato data breve che è formattato ad esempio in 12-nov-2022 e non in 12112022.
  • Re: Filtro maschera in base a dato esterno

    oregon ha scritto:


    Scusa ma non dovrebbe essere
    
    sWhr = "Format(DATAtabDFda,'mmyyyy')=" & Chr(34) & Format(Me!cboMese,"00") & Me!cboAnno & Chr(34)
    
    
    ?
    
    Grazie oregon, cosi' funziona e non da piu' errore. Ho testato anche cambiando da "mmyyyy" a "myyyy" e funziona anche cosi'.
  • Re: Filtro maschera in base a dato esterno

    oregon ha scritto:


    Scusa ma non dovrebbe essere
    
    sWhr = "Format(DATAtabDFda,'mmyyyy')=" & Chr(34) & Format(Me!cboMese,"00") & Me!cboAnno & Chr(34)
    
    
    ?
    
    Grazie Antonio, occhio di falco... scordato gli apicetti...!!!!
  • Re: Filtro maschera in base a dato esterno

    A chiusura del post inserisco il codice completo con la verifica se le due combo sono compilate, il codice funziona ma se ho commesso errori le critiche sono ben accette:
    
    Private Sub Comando89_Click()
    On Error GoTo Err_Comando89_Click
    
        Dim sWhr As String
        
        If IsNull(Me!cboMese.Column(0)) = True Then
            MsgBox "Inserire mese da filtrare", vbCritical
            cboMese.SetFocus
            Exit Sub
        Else
            If IsNull(Me!cboAnno.Column(0)) = True Then
                MsgBox "Inserire anno da filtrare", vbCritical
                cboAnno.SetFocus
                Exit Sub
            Else
                sWhr = "Format(DATAtabDFda,'myyyy')=" & Chr(34) & Me!cboMese & Me!cboAnno & Chr(34) & "AND MEMOtabDFlf Is Null"
                Me.Filter = sWhr
                Me.FilterOn = True
            End If
        End If
        
    Exit_Comando89_Click:
        Exit Sub
    
    Err_Comando89_Click:
        MsgBox Err.Description
        Resume Exit_Comando89_Click
        
    End Sub
    
  • Re: Filtro maschera in base a dato esterno

    Scusa ma devo riscrivere il codice... non mi piace la concatenazione dei controlli fatta cosi... pignoleria estetica... perchè a livello funzionale hai scritto bene.
    
    Private Sub Comando89_Click()
    	On Error GoTo Err_Comando89_Click
    
    	Dim sWhr As String
        
    	If IsNull(Me!cboMese.Column(0))  Then
    		MsgBox "Inserire mese da filtrare", vbCritical
    		cboMese.SetFocus
    		Exit Sub
    	End if
    	
    	If IsNull(Me!cboAnno.Column(0))  Then
    		MsgBox "Inserire anno da filtrare", vbCritical
    		cboAnno.SetFocus
    		Exit Sub
    	End if
        
    	sWhr = "Format(DATAtabDFda,'myyyy')=" & Chr(34) & Me!cboMese & Me!cboAnno & Chr(34) & "AND MEMOtabDFlf Is Null"
    	Me.Filter = sWhr
    	Me.FilterOn = True
        
    Exit_Comando89_Click:
    	Exit Sub
    
    Err_Comando89_Click:
    	MsgBox Err.Description
    	Resume Exit_Comando89_Click
    End Sub
    P.S. non si può vedere un Button chiamato Comando89...
  • Re: Filtro maschera in base a dato esterno

    Grazie Alex per il consiglio. Avevo gia' cambiato il nome del pulsante, faceva parte dell'affinamento finale.
    Ora pero' mi trovo con un'altro problema: ho cercato tra i miei libri e online ma non ho trovato nulla riguardo.

    Nella stessa maschera di cui sopra, una volta applicato il filtro, ho una ulteriore combo associata al campo Fornitore. vorrei che selezionando il filtro standard di Access mi apparisse la checkbox per la selezione delle singole voci, mentre mi permette di filtrare solo in base al testo:


    Se invece applico un analogo filtro ma utilizzando l'interfaccia standard di Access, la checkbox compare:


    Grazie in anticipo per chi mi puo' illuminare
  • Re: Filtro maschera in base a dato esterno

    Io userei una ListBox a scelta multipla Estesa... componendo il Criterio di filtro da codice... non uso mai quelle interfacce per la mancata possibilità di intervenire sugli eventi... ma magari sono io che non li ho mai approfonditi...!
Devi accedere o registrarti per scrivere nel forum
25 risposte