Campo Tipo SI/NO

di il
12 risposte

Campo Tipo SI/NO

Salve a Tutti,
in una tabella ho inserito un campo Tipo SI/NO (Check) che mi serve per stabilire quanti record devono apparire sul Report.
Se ad esempio metto la spunta su tre, quattro, n... record, facendo click sul pulsante mi apre il Report con tre, quattro, n... record.
Codice usato:
Private Sub Comando57_Click()
On Error GoTo errHanlder

Me.Dirty = False
DoCmd.OpenReport "ReportPass", acViewPreview, , "Check=-1"
exterrHanlder:
Exit Sub

errHanlder:
With Err
Select Case Err
Case 2501
Resume Next
Case Else
MsgBox "ERR#" & .Number _
& vbNewLine & .Description _
, vbOKOnly Or vbCritical
End Select
End With
Resume exterrHanlder
End Sub

Io vorrei che una volta visualizzati i record selezionati, questi devono perdere la spunta e non devono essere più visibili nella maschera.
Ho provato ad inserire prima del Exit Sub
Me.Check.Value = False
ma mi modifica solo un record e non tutti quelli che hanno la spunta e non so come rendere non più visibili sulla maschera solo quelli gia visti.
Grazie.

12 Risposte

  • Re: Campo Tipo SI/NO

    Mimi ha scritto:


    Io vorrei che una volta visualizzati i record selezionati, questi devono perdere la spunta
    Usa una query di aggiornamento.

    Mimi ha scritto:


    e non devono essere più visibili nella maschera
    ...non capisco cosa vuol dire. Se ce l'hai in maschera, vuol dire che gradisci interagire...Non so, potresti prevedere una Maschera2 identica alla prima senza il campo Check, da visualizzare in seconda battuta...
  • Re: Campo Tipo SI/NO

    Salve
    vorrei chiarite alcune cose

    Mimi ha scritto:


    Io vorrei che... questi devono perdere la spunta

    Perchè? li vuoi rendere di nuovo selezionabili?
    poi dici:
    ...e non devono essere più visibili nella maschera.
    Quindi vuoi distinguere quelli stampati da quelli da stampare?
    l'azzeramento della spunta la ottieni con una query di aggiornamento basata proprio su quel "Ck"
    ma io temo che stai sbagliando il modo di procedere ti faccio due esempi "Scelta di prodotti da un listino"
    1° Azzero i ck all'apertura della maschera > Scelgo i prodotti con il flag > li esporto in fattura
    Se da una verifica c'è 1 o piu prodotti assenti > torno ai prodotti...
    e voglio trovare quelli già scelti quindi applico dei filtri:
    1 scelti
    2 NON scelti
    3 Tutti
    quindi il processo diventa
    1> Azzero all'apertura
    2> Flag si/no
    3> filtro
    Questo è un criterio ma se tu non vuoi vedere nella maschera i record che hai selezionato prima, NON devi togliere il flag
    ma eseguire un filtro che utilizza proprio quel flag con 2 righe di codice:
    
    dim Criterio as string
    criterio="Me.Check="& 0  
    Me.Form.Filter=criterio
    Me.Form.FilterOn=True
    poi...vedi tu
  • Re: Campo Tipo SI/NO

    Per OsvaldoLaviosa:
    1. Se ad esempio ho una maschera con 300 record e ne seleziono 20 da stampare, dopo averli stampati vorrei che nella maschera non vengono più visualizzati 300 ma i 280 non ancora stampati.
    2. Ho una query ma se, in qualche modo, non viene tolta la spunta dal campo Check, quando io vado a selezionare altri 30 record nel Report (da stampare) mi ritrovo i 20 di prima più i 30.

    Per Gianni55:
    se inserisco il tuo codice prima della Exit Sub, esce una msgbox che chiede di Immettere il valore di Parametro Me.Check e mi fa sparire tutti i record presenti nella maschera (basata su una query).
    grazie
  • Re: Campo Tipo SI/NO

    Salve,
    se chiede il parametro vuol dire che il nome del controllo non é check.

    Attento non devi inserire quel codice prima di exit sub ma
    prima della gestione errori.
    magari posta il codice completo
    saluti
  • Re: Campo Tipo SI/NO

    Gianni55 ha scritto:


    ....
    Questo è un criterio ma se tu non vuoi vedere nella maschera i record che hai selezionato prima, NON devi togliere il flag
    ma eseguire un filtro che utilizza proprio quel flag con 2 righe di codice:
    
    dim Criterio as string
    criterio="Me.Check="& 0  
    Me.Form.Filter=criterio
    Me.Form.FilterOn=True
    poi...vedi tu
    Sei sicuro che quella sintassi per il [criterio] sia ammissibile...?
  • Re: Campo Tipo SI/NO

    Gianni55 ha scritto:


    Salve,
    se chiede il parametro vuol dire che il nome del controllo non é check.

    Attento non devi inserire quel codice prima di exit sub ma
    prima della gestione errori.
    magari posta il codice completo
    saluti
    Questo è tutto, compreso quello che mi hai suggerito

    Private Sub Comando57_Click()
    On Error GoTo errHanlder

    Dim Criterio As String

    Me.Dirty = False
    DoCmd.OpenReport "ReportPass", acViewPreview, , "Check=-1"

    Criterio = "Me.Check" & 0
    Me.Form.Filter = Criterio
    Me.Form.FilterOn = True

    exterrHanlder:

    Exit Sub

    errHanlder:
    With Err
    Select Case Err
    Case 2501
    Resume Next
    Case Else
    MsgBox "ERR#" & .Number _
    & vbNewLine & .Description _
    , vbOKOnly Or vbCritical
    End Select
    End With
    Resume exterrHanlder
    End Sub
  • Re: Campo Tipo SI/NO

    Per Alex
    e già c'era un "Orrore"

    Usa i tag per il codice!

    Correggi così
    Private Sub Comando57_Click()
    On Error GoTo errHanlder
    
    Dim Criterio As String
    
    Me.Dirty = False
    DoCmd.OpenReport "ReportPass", acViewPreview, , "Check=-1"
    
    Criterio = "Check=" & 0      '< quì c'è un "me" di troppo
    Me.Form.Filter = Criterio
    Me.Form.FilterOn = True
    
    exterrHanlder:
    
    Exit Sub
    
    errHanlder:
    With Err
        Select Case Err
            Case 2501
                Resume Next
            Case Else
                MsgBox "ERR#" & .Number _
                 & vbNewLine & .Description _
                 , vbOKOnly Or vbCritical
        End Select
    End With
          Resume exterrHanlder
    End Sub
  • Re: Campo Tipo SI/NO

    Adesso funziona temporaneamente, non vedo i record selezionati fino a quando non chiudo la maschera, ma se la chiudo e la riapro li rivedo.
    Il secondo punto era quello di togliere la spunta dal campo Check, in modo che quando io vado a selezionare altri 30 record nel nuovo Report non mi ritrovo i 20 di prima più i 30 nuovi.
    grazie per l'aiuto
  • Re: Campo Tipo SI/NO

    Bene in questo caso dovresti prevedere 2 Ck
    il primo per selezionare la stampa
    il secondo per discriminare la stampa
    quindi
    1 selezioni per stampare
    2 stampi
    3 query per aggiornare i record stampati
    flag su 2 ck etc...

    nelle stampe varrà il criterio
    1° ck = true 2°ck=false
    saluti
  • Re: Campo Tipo SI/NO

    Gianni55 ha scritto:


    Bene in questo caso dovresti prevedere 2 Ck
    il primo per selezionare la stampa
    il secondo per discriminare la stampa
    quindi
    1 selezioni per stampare
    2 stampi
    3 query per aggiornare i record stampati
    flag su 2 ck etc...

    nelle stampe varrà il criterio
    1° ck = true 2°ck=false
    saluti
    Scusa se sono ripetitivo, ma non ci riesco da solo.
    Io vorrei che quando clicco sul pulsante "Anteprima di Stampa":
    1. mi fa vedere nel Report solo i record con la spunta sul campo "Check";
    2. stampa
    3. mette la spunta sul campo chiamato "Stampato" (tanti quanti sono quelli su Check);
    4. mi ritoglie la spunta sul campo "Check" e rimane solo sul campo "Stampato"

    Private Sub Comando57_Click()

    On Error GoTo errHanlder

    Me.Dirty = False
    DoCmd.OpenReport "ReportPass", acViewPreview, , "Check=-1"

    Me.Stampato.Value = True '<Ho provato così, però la spunta la mette solo sul primo record non su tutti quelli selezionati>

    exterrHanlder:

    Exit Sub

    errHanlder:
    With Err
    Select Case Err
    Case 2501
    Resume Next
    Case Else
    MsgBox "ERR#" & .Number _
    & vbNewLine & .Description _
    , vbOKOnly Or vbCritical
    End Select
    End With
    Resume exterrHanlder

    End Sub

    E poi come riporto il campo Check senza spunta?
    grazie
  • Re: Campo Tipo SI/NO

    Mimi ha scritto:


    E poi come riporto il campo Check senza spunta?
    NON devi togliere la spunta su quel Check

    Credevo d'aver dato tutti i suggerimenti ma vedo che non è bastato... i Ck devono essere 2 :
    il 1° serve per selezionare la stampa e a tenere memoria dei record che sono stati inviati alla stampa nonché a spuntare con
    la query quelli che sono stati inviati alla stampa
    il 2° Ck deve servire a spuntare i record che sono stati gia stampati

    Il codice dev'essere:
    
    Dim CriterioStampa As String
    Dim CriterioFiltro As String
    
    CriterioStampa = "CkStampa=" & -1 & "AND CkStampato=" & 0
     
    Me.Dirty = False
    'Lancio la stampa con "CriterioStampa"
    DoCmd.OpenReport "ReportPass", acViewPreview, , CriterioStampa  
    
     'Aggiorno con la query il 2° Ck i record che hanno true sul ckStampa
    DoCmd.RunSQL "UPDATE TbPass SET TbPass.CkStampato = True WHERE (((TbPass.CkStampa)=True));", -1   
    ' a questo punto i record stampati hanno il valore TRUE su ambedue i ck
    
    'applico il filtro alla maschera dei soli record che hanno ZERO in ambedue i ck
    
    CriterioFiltro = "CkStampa=" & 0 & "AND CkStampato=" & 0
    Me.Form.Filter = CriterioFiltro     
    Me.Form.FilterOn = True
    Ora basta fare copia/Incolla e cambiare il nome della Tabella nella query
    Saluti
  • Re: Campo Tipo SI/NO

    Grazie Gianni55 e mi scuso per aver fatto confusione, nonostante nella risposta precedente avevo capito il tuo suggerimento di mettere la spunta sia sul campo Check e sia sul campo Stampato.
    In realtà non ci capisco un granchè con i codici.
Devi accedere o registrarti per scrivere nel forum
12 risposte