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/918-filtro.html)

Χρήστος 15-01-11 17:04

Φίλτρο
 
Καλησπέρα.
Θα ήθελα βοήθεια σ'ένα πρόβλημα που μου προέκυψε.
Έχω έναν πίνακα με πεδία: [ΠΕΡΙΓΡΑΦΗ] και [ΣΧΕΣΗ]. Στο πεδίο [ΣΧΕΣΗ] επιλέγεται μια απ' τις 2 τιμές: ΠΕΛΑΤΗΣ, ΠΡΟΜΗΘΕΥΤΗΣ.

Ας υποθέσουμε οτι βλέπυμε τις εγγραφές του παραπάνω πίνακα σε Φόρμα.
Θα ήθελα να έχω ένα combobox όπου όταν επιλέγω ΠΕΛΑΤΕΣ να φιλτράρει τις εγγραφές και να φαίνονται μόνο οι ΠΕΛΑΤΕΣ και όταν επιλέγω ΠΡΟΜΗΘΕΥΤΕΣ να εμφανίζονται μόνο αυτοί.

kapetang 15-01-11 19:31

1 Συνημμένο(α)
Καλησπέρα
Χρήστο, στη ΒΔ που επισυνάπτω υπάρχει μία υλοποίηση αυτού που ζητάς.
Στο σύνθετο πλαίσιο πρόσθεσα και μία επιλογή «ΟΛΟΙ» για να εμφανίζονται όλοι οι συναλλασσόμενοι.
Η λειτουργικότητα της φόρμας οφείλεται στον παρακάτω κώδικα
Κώδικας:

Private Sub cboFilter_AfterUpdate()
    If Me.cboFilter = "<<ΟΛΟΙ>>" Then
        Me.Filter = ""
    Else
        Me.Filter = "[ΣΧΕΣΗ]='" & Me.cboFilter & "'"
    End If
    Me.FilterOn = True
End Sub

Γιώργος

Χρήστος 15-01-11 19:50

Σ' ευχαριστώ πολύ...
 
Θα ήθελα τη συμβουλή σου και σε κάτι ακόμη. Αν κάποιος είναι πελάτης θέλω να του περνάω έσοδα ενώ αν είναι προμηθευτής θέλω να του περνάω έξοδα. Σε μια έκθεση θα ήθελα να βλέπω ανα εβδομάδα τα έσοδα και τα έξοδα.

Αυτό που σκέφτομαι είναι: μια δευτερεύουσα φόρμα (συνδεδεμένη με την κύρια στο CodeID)...όπου θα δίνω ημερομηνία, ποσό και ένα πεδίο όπου θα επιλέγω ΕΔΟΔΑ ή ΕΞΟΔΑ. Είναι καλή ιδέα;

Χρήστος 15-01-11 20:07

μάλλον οχι...
 
Σίγουρα οχι δευτερεύουσα φόρμα γιατί τότε η κύρια φόρμα δεν θα μπορεί να είναι συνεχής. Μάλλον και κάποιο κουμπάκι...

kapetang 16-01-11 11:16

1 Συνημμένο(α)
Καλημέρα

Χρήστο, στη βάση δεδομένων που επισυνάπτω, για την καταχώρηση των ποσών, παρουσιάζονται δύο λύσεις:
1. Με κύρια φόρμα και δευτερεύουσα (frmSinalasomeniPosa). Επειδή η κύρια φόρμα δεν είναι συνεχής, για να διευκολυνθεί η επιλογή των συναλλασσόμενων, πρόσθεσα δύο πτυσσόμενα πλαίσια για το φιλτράρισμά τους.
2. Με την προσθήκη κουμπιού στη φόρμα των συναλλασσομένων για το άνοιγμα της φόρμας καταχώρησης των ποσών (frmPosa) κατάλληλα φιλτραρισμένης.
Ποια είναι καλύτερη δεν ξέρω. Εγώ προτιμώ τη σύνθετη φόρμα. Εξαρτάται και από το σχεδιασμό της εφαρμογής.
Το πεδίο για να διακρίνεις αν το ποσό που καταχωρείται είναι έσοδο ή έξοδο δε χρειάζεται. Αυτό διευκρινίζεται από τη σχέση του συναλλασσόμενου (πελάτης=έσοδο, προμηθευτής=έξοδο). Για να δεις πως γίνεται πρόσθεσα ένα ερώτημα (qrySinalasomeniPosa) στο οποίο περιέχονται και τα πεδία «ΕΣΟΔΑ» και «ΕΞΟΔΑ».
Την έκθεση μπορείς να τη βασίσεις στο ερώτημα.

Φιλικά/Γιώργος

Χρήστος 16-01-11 11:58

Σ' ευχαριστώ πολύ...
 
Όσο περίμενα δες λίγο τι έφτιαξα.

Meteora 16-01-11 13:56

1 Συνημμένο(α)
Καλημέρα...
Δυο σχόλια με σκοπό να βοηθήσω στο μέτρο των μικρών δυνατοτήτων.
α) Πρόσφατα εγκατέστησα μια εφαρμογή μου σε δίκτυο και διαπίστωσα οτι η εντολή me.filter="" (που ουσιαστικά αναιρεί το φίλτρο) δεν δούλεψε! Δεν γνωρίζω τι φταίει, έχω κάποιες σκέψεις, αλλά δεν έχω την εξήγηση. Έτσι ο κώδικας που χρησιμοποιεί ο Γιώργος, προτείνω (έτσι έλυσα το πρόβλημά μου...) να γραφεί ως εξής:
Κώδικας:


Private Sub cboFilter_AfterUpdate()
    If Me.cboFilter = "<<ΟΛΟΙ>>" Then
        Me.FilterOn = False
    Else
        Me.Filter = "[ΣΧΕΣΗ]='" & Me.cboFilter & "'"
      Me.FilterOn = True
    End If
End Sub

2) Διάβασα ότι :
Παράθεση:

Σίγουρα οχι δευτερεύουσα φόρμα γιατί τότε η κύρια φόρμα δεν θα μπορεί να είναι συνεχής. Μάλλον και κάποιο κουμπάκι...
Αυτό δεν είναι σωστό! Μπορεί η κύρια φόρμα να είναι συνεχής. Απλά ! Η access βγάζει ένα μήνυμα περί απαγόρευσης, όταν μια φόρμα την σέρνεις πχ στο υποσέλιδο της κύριας, αλλά αυτό το κάνει διότι δεν έχει υπόψην της -ακόμη - την σχέση των περιεχομένων των δυο φορμών. Επιλέγεις λοιπόν την δευτερεύουσα φόρμα και στην καρτέλα 'Δεδομένα', εργάζεσαι στην ιδιότητα 'σύνδεση πρωτευόντων πεδίων' κάνεις κλικ στις τελείες ορίζοντας τα πεδία για να γίνει η σύνδεση των περιεχομένων των φορμών. Στη συνέχεια επιλέγεις την κύρια φόρμα και στην καρτέλα 'μορφή' επιλέγεις την 'συνεχή φόρμα' στην ιδιότητα 'προεπιλεγμένη προβολή'
Αυτά είχα να καταθέσω στη συζήτηση. Καλή συνέχεια...
Με εκτίμηση
Νίκος Δ.

Υστερολόγιο: Ανεβάζω ένα μικρό παράδειγμα όπου κύρια και δευτερύουσα φόρμά, έχουν μορφή 'συνεχούς φόρμας'

Χρήστος 16-01-11 14:34

Ευχαριστώ...
 
Ευχαριστώ πολύ για τις παρατηρήσεις και τη βοήθεια...

kapetang 16-01-11 16:42

Καλησπέρα

Χρήστο, κατά τη γνώμη μου, για τη δημιουργία μιας σωστής βάσης δεδομένων, πρέπει συνοπτικά:
1. Να καθορίσουμε σαφώς το σκοπό της (τι θα κάνει).
2. Να καθορίσουμε τα απαιτούμενα δεδομένα και να τα οργανώσουμε σε κατάλληλους πίνακες.
3. Να καθορίσουμε τις ιδιότητες των πεδίων των πινάκων (τύπος, μοναδικά, απαιτούμενα, κλπ) και τα ευρετήρια.
4. Να δώσουμε κατάλληλα ονόματα στα αντικείμενα της βάσης. Για παράδειγμα ονόματα με παρενθέσεις απαγορεύονται.
5. Να καθορίσουμε τις σχέσεις των πινάκων.
Βλέποντας τη ΒΔ που ανέβασες σχημάτισα την εντύπωση ότι δεν έδωσες τη δέουσα βαρύτητα στο σωστό σχεδιασμό της βάσης. Ουσιαστικά η βάση είναι μια συνένωση κάποιων δειγμάτων ΒΔ, που παρουσιάστηκαν από μέλη του φόρουμ για να εξηγήσουν κάποιες απαντήσεις σε τεθέντα ερωτήματα.
Οι απαντήσεις στο φόρουμ θα πρέπει να θεωρούνται ιδέες (εργαλεία) που χρειάζονται προσαρμογή για να ενταχθούν σε μια σωστά σχεδιασμένη βάση δεδομένων.
Τελειώνοντας πιστεύω ότι πρώτα θα πρέπει να ασχοληθείς με τη σωστή σχεδίαση της ΒΔ και στη συνέχεια με το περιβάλλον χρήσης της (φόρμες εκθέσεις).

Φιλικά/Γιώργος

Χρήστος 16-01-11 17:06

Πράγματι...
 
Έχεις απόλυτο δίκιο.
Είχα ξεχάσει να ορίσω ακεραιότητα αναφορών (Βασικότατο)...αλλά δεν έχω περάσει ακόμη δεδομένα γι' αυτό και ήμουν χαλαρός.
Τώρα όσο αφορά το σχεδιασμό ακόμη ψάχνομαι...
Πάντος έχεις δίκιο...όσοι βλέπουν τις βάσεις μου λένε το ίδιο πράγμα: Κάνει ωραία πράγματα...μπράβο.....και άλλα χαριτωμένα....αλλά όσοι πραγματικά ξέρουν μου λένε:λάθος ονόματα...πολύπλοκοι συσχετισμοί....
Πάντως ψάχνομαι ...και ευχαριστώ για τις παρατηρήσεις.


Η ώρα είναι 13:07.

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


Search Engine Optimization by vBSEO 3.3.2