Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Κουμπί Κατάργησης Φίλτρου (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1776-koympi-katargisis-filtroy.html)

Χρήστος 08-04-12 11:47

Κουμπί Κατάργησης Φίλτρου
 
Καλημέρα σ' όλους.
Θα ήθελα την βοήθειά σας στο εξής:

Σε μια Φόρμα έχω τα πεδία ProiontaID, Proion
Η εμφάνιση των εγγραφών ελέγχεται από ένα Combobox (combofiltro) που λιτουργεί ως Φίλτρο.

Όλες οι εγγραφές εμφανίζονται όταν πατάμε το κουμπί cmdShowAll, στο οποίο αντιστοιχίζεται ο παρακάτω κώδικας:

On Error GoTo Err_cmdShowAll_Click

Dim RecID As Long
Me.combofiltro = vbNullString
RecID = Nz(Me.ProiontaID)
Me.FilterOn = False
Me.Filter = vbNullString
With Me.Recordset.Clone
.FindFirst ("ProiontaID=" & RecID)
If Not .NoMatch Then Me.Bookmark = .Bookmark
End With

Exit_cmdShowAll_Click:
Exit Sub

Err_cmdShowAll_Click:
MsgBox Err.Description
Resume Exit_cmdShowAll_Click
End Sub

Το πρόβλημα είναι το εξής :
ΟΤΑΝ χρησιμοποιώντας το φίλτρο ΔΕΝ εμφανίζεται καμμιά εγγραφή τότε το πάτημα του cmdShowAll ΔΕΝ εμφανίζει ΟΛΕΣ τις εγγραφές.
Θα μπορούσε να διορθωθεί αυτό;

Meteora 08-04-12 19:59

Καλησπέρα

Αντί να έχεις όλο αυτό τον κώδικα που μας παρουσιάζεις, γράψε στην ιδιότητα του κουμπιού 'με το κλικ' μόνο αυτό :

Me.FilterOn = False

Για να δούμε...

Με εκτίμηση
Νίκος Δ.

Χρήστος 08-04-12 20:04

Νίκο αυτό σημαίνει οτι δεν θα έχω πλέον το πλεονέκτημα, πατώντας το cmdShowAll, να "κρατά" επιλεγμένη την τελευταία εγγραφή που ήταν επιλεγμένη πριν εφαρμοστεί το Φίλτρο!

Κοίτα δεν με πειράζει δηλαδή αλλά αν γίνεται...

Χρήστος 08-04-12 20:18

Αν βάλω το ακόλουθο είναι λάθος;
....αλλαγή.................................. ...................
Err_cmdShowAll_Click:
MeFilterOn=False

Meteora 08-04-12 21:02

Χρήστο,

Δεν είχα ιδέα του ιστορικού για το θέμα που μας έχεις παρουσιάσει και απάντησα μονολεκτικά!
Άνοιξα το επισυναπτόμενο και δεν μπορώ να κάνω αναπαραγωγή του λάθους που περιγράφεις. ( πάτησα Ζ στο combofiltro και δεν εμφανίζοννται εγγραφές και έτσι πρέπει. Αν πατηθεί το cmdShowAll τότε εμφανίζονται ΟΛΕΣ οι εγγραφές!)

Κλείσε τη εφαρμογή και ξεκίνησε πάλι...

Νίκος Δ.

Χρήστος 08-04-12 21:04

Ναι, το επισυναπτόμενο είναι διορθωμένο....
απλά δεν ξέρω αν ευσταθεί σαν λύση!

Meteora 08-04-12 21:39

Όχι !

Θα σε απαντήσει ο Τάσος. Καληνύχτα από μένα.
Νίκος Δ.

Tasos 08-04-12 21:44

Καλησπέρα Χρήστο!
Είναι καλύτερο να αποφεύγομε τα λάθη του κώδικα αντί να τα προκαλούμε προκειμένου να επιτύχουμε το σκοπό μας.

Όταν η φιλτραρισμένη φόρμα δεν έχει εγγραφές, η γραμμή: RecID = Nz(Me.ProiontaID) θα προκαλέσει σφάλμα αφού το πεδίο ProiontaID δεν υπάρχει καν στη φόρμα.

Τροποποιούμε λοιπόν τον κώδικα έτσι:


Κώδικας:

Private Sub cmdShowAll_Click()
    On Error GoTo Err_cmdShowAll_Click

    Dim RecID As Long
    Me.txtSearch = vbNullString
    Me.combofiltro = vbNullString

   If Me.Recordset.Clone.RecordCount Then
        RecID = Nz(Me.ProiontaID)
    End If
    Me.FilterOn = False
    Me.Filter = vbNullString
    If RecID > 0 Then
        With Me.Recordset.Clone
            .FindFirst ("ProiontaID=" & RecID)
            If Not .NoMatch Then Me.Bookmark = .Bookmark
        End With
    End If
Exit_cmdShowAll_Click:
    Exit Sub

Err_cmdShowAll_Click:
    Resume Exit_cmdShowAll_Click
End Sub

Καλή συνέχεια!

Τάσος

Χρήστος 08-04-12 21:44

Καληνύχτα Νίκο

Χρήστος 08-04-12 21:49

Τάσο είσαι ιδιαίτερα κατατοπιστικός.
Ευχαριστώ πολύ για την πολύτιμη βοήθεια.


Η ώρα είναι 04:49.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2