CASELLE DI RIEPILOGO

di il
85 risposte

85 Risposte - Pagina 4

  • Re: CASELLE DI RIEPILOGO

    Ti pongo una domanda. Quale dovrebbe essere il ruolo svolto dalla stringa strFilterDate? Ragiona su questo.

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Ti pongo una domanda. Quale dovrebbe essere il ruolo svolto dalla stringa strFilterDate? Ragiona su questo.

    Dovrebbe essere il raccoglitore dei filtri dell'intervallo di data scelta. 

    Dovrei dire al codice di filtrare entrambi le stringhe  con un “and”  ma non so come fare… 

    Dopo un po' il cervello va in tilt ??

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Ti pongo una domanda. Quale dovrebbe essere il ruolo svolto dalla stringa strFilterDate? Ragiona su questo.

    Basterebbe nel pulsante filtro mettere ?

    Ho paura di sputtan@re il lavoro fatto 

    Filter=strFilterDate and myformfilter 
    Me.Filteron=true
  • Re: CASELLE DI RIEPILOGO

    Ho scritto a braccio senza provare.

    Scrivi cosi:

    Private Function MyFilterForm() As String
    
    Dim strFilterDate As String
    Dim varSel As Variant
    
    For Each varSel In Me.LisAccert.ItemsSelected
        MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "',"
    Next varSel
    
    If MyFilterForm <> vbNullString Then
    
         MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1)
    	 MyFilterForm = "accertamenti IN (" & MyFilterForm & ")"
    
    	 If Len(txtDaData & vbNullString)>0 and Len(txtAData & vbNullString)>0 then
    	 	strFilterDate = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1
    
    	 	MyFilterForm=MyFilterForm & " and " & strFilterDate
    	 end if
    	 
    end if
    end function

    poi l'evento click del pulsante

    Private Sub btnFilter_Click()
    Me.Filter = MyFilterForm
    Me.FilterOn = True
    end sub
  • Re: CASELLE DI RIEPILOGO

    Ok, forse ci sono…. non serve la stringa perchè i filtri vanno richiamati da MyFilterForm

    ma mi da errore…

    Private Function MyFilterForm() As String
    MyFilterForm = vbNullString
    Dim strFilter     As String
    Dim varSel As Variant
    For Each varSel In Me.LisAccert.ItemsSelected
        MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "',"
    Next varSel
    If MyFilterForm <> vbNullString Then
      If Len(strFilter) > 0 Then
         If Len(txtDaData & vbNullString) = 0 Then txtDaData = #1/1/1900#
         If Len(txtAData & vbNullString) = 0 Then txtAData = #12/31/2100#
    Filter = Left$(strFilter, Len(strFilter) - 5) & " and " & strFilterDate
    MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1)
    MyFilterForm = "accertamenti IN (" & MyFilterForm & ")"
    MyFilterForm = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1
    Me.Filter = MyFilterForm
    Me.FilterOn = True
    Else
        Me.FilterOn = False
    End If
    End If
           End Function
  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Private Function MyFilterForm() As String Dim strFilterDate As String Dim varSel As Variant For Each varSel In Me.LisAccert.ItemsSelected MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "'," Next varSel If MyFilterForm <> vbNullString Then MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1) MyFilterForm = "accertamenti IN (" & MyFilterForm & ")" If Len(txtDaData & vbNullString)>0 and Len(txtAData & vbNullString)>0 then strFilterDate = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1 MyFilterForm=MyFilterForm & " and " & strFilterDate end if end if end function

    Scusa, ho visto ora la risposta provo cosi! ;) grazie

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Private Sub btnFilter_Click() Me.Filter = MyFilterForm Me.FilterOn = True end sub

    FUNZIONAAAAAAAA!!!!

    Grazie davvero!!!

    adesso inserisco anche la CBO nel codice!

    grazie davvero tanto!

    sto facendo scuola in questo forum!!!

  • Re: CASELLE DI RIEPILOGO

    Il codice è il minimo indispensabile. Si potrebbe implementare con qualche riga di codice che guarda se i campi data sono compilati o meno.

    Se uno è compilato e l'altro non è compilato allore chiedere se compilare l'altro se si vuole filtrare anche per intervallo di data.

    Da aggiungere nell'evento click ovviamente.

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Il codice è il minimo indispensabile. Si potrebbe implementare con qualche riga di codice che guarda se i campi data sono compilati o meno.

    Se uno è compilato e l'altro non è compilato allore chiedere se compilare l'altro se si vuole filtrare anche per intervallo di data.

    Da aggiungere nell'evento click ovviamente.

    Per me è già tanto, davvero! vorrei approffondire come si fa… fai conto che è la prima volta che mi ci metto a fare qualcosa in access nella mia vita e non ho mai studiato (ho preso il manuale, arriva domani! ;)) 

    Già vedere che una cosa funziona è una scarica di addrenalina! Ma scrivere i codici è ancora una difficile per me, ma ci arriverò mi sta piacendo assai questo nuovo mondo. 

    Intanto, inserendo la CBO nel codice….. sballa tutto… 

    Ne sarei felice solo di far funzionare i miei filtri come si dovrebbero!!! ;D

    Private Function MyFilterForm() As String
    Dim strFilterDate As String
    Dim FilterCBODip As String
    Dim varSel As Variant
    For Each varSel In Me.LisAccert.ItemsSelected
       MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "',"
    Next varSel
    If MyFilterForm <> vbNullString Then
        MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1)
        MyFilterForm = "accertamenti IN (" & MyFilterForm & ")"
        If Len(txtDaData & vbNullString) > 0 And Len(txtAData & vbNullString) > 0 Then
           strFilterDate = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1
     
        If FilterCBODip <> vbNullString Then
           FilterCBODip = "[Dipendente] = """ & Me![CC_Dipendente] & """"
     
    MyFilterForm = MyFilterForm & " and " & strFilterDate & " and " & FilterCBODip
        End If
        End If
    End If
  • Re: CASELLE DI RIEPILOGO

    Attenta dove metti End if.

  • Re: CASELLE DI RIEPILOGO

    Ho cancellato i dati sensibili….  questo è il risultato che ottengo con il codice sopra.

    credevo funzionasse perchè avevo inserito  un intervallo che mi aveva riproposto, ma era una coicidenza.

  • Re: CASELLE DI RIEPILOGO

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Attenta dove metti End if.

    Cioè? non devo inserire sotto lF del “paragrafo”?

  • Re: CASELLE DI RIEPILOGO

    Il cosice lo devo scrivere cosi:

    Private Function MyFilterForm() As String
    Dim strFilterDate As String
    Dim FilterCBODip As String
    Dim varSel As Variant
    For Each varSel In Me.LisAccert.ItemsSelected
       MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "',"
    Next varSel
    If MyFilterForm <> vbNullString Then
        MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1)
        MyFilterForm = "accertamenti IN (" & MyFilterForm & ")"
        
        If Len(txtDaData & vbNullString) > 0 And Len(txtAData & vbNullString) > 0 Then
           strFilterDate = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1
     	end if
     	
        If FilterCBODip <> vbNullString Then
           FilterCBODip = "[IDDipendente] = " & Me![CC_Dipendente].column(0)
     	end if
     	
    	MyFilterForm = MyFilterForm & " and " & strFilterDate & " and " & FilterCBODip
     
    
    End If

    E poi dato che stati utilizzando una combobox che indicare un criterio di filtro, non utilizzare il campo [Dipendente] per filtare ma IDDipendente. Sempre a patto che tu abbia impostato la combobox a due colonne con la prima colonna [IDDipendente] e la seconda colonna [Dipendente]. Poi dioende come hai deniminato i campi.

    E' più efficiente,

  • Re: CASELLE DI RIEPILOGO

    02/07/2023 - Antony73 ha scritto:


    Private Function MyFilterForm() As String Dim strFilterDate As String Dim FilterCBODip As String Dim varSel As Variant For Each varSel In Me.LisAccert.ItemsSelected MyFilterForm = MyFilterForm & "'" & Me.LisAccert.ItemData(varSel) & "'," Next varSel If MyFilterForm <> vbNullString Then MyFilterForm = Mid$(MyFilterForm, 1, Len(MyFilterForm) - 1) MyFilterForm = "accertamenti IN (" & MyFilterForm & ")" If Len(txtDaData & vbNullString) > 0 And Len(txtAData & vbNullString) > 0 Then strFilterDate = "ProssimaVisita>=" & CLng(txtDaData) & " and ProssimaVisita<" & CLng(txtAData) + 1 end if If FilterCBODip <> vbNullString Then FilterCBODip = "[IDDipendente] = " & Me![CC_Dipendente].column(0) end if MyFilterForm = MyFilterForm & " and " & strFilterDate & " and " & FilterCBODip End If

    Grazie mille,

    allora cambio la combo creando una ID… non ho messo nella combo, solo il nome del dipendente.

    questo perchè, nella tabella si usa nome e cognome come campo e ho creato un concatena per creare il campo dipendente.

    ora studio il codice che mi hai inoltrato, cosi cerco di capire cosa hai inserito.

    grazie mille ancora

Devi accedere o registrarti per scrivere nel forum
85 risposte