ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Εκθέσεις ] Δυναμικό φίλτρο σε έκθέση

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 11-11-10, 19:58
Όνομα: ΦΩΤΗΣ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-10-2010
Μηνύματα: 11
Προεπιλογή Δυναμικό φίλτρο σε έκθέση

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

Σας ανακάλυψα πολύ πρόσφατα και διαπίστωσα άμεσα πόσο φανταστική δουλειά κάνετε με την βοήθεια που παρέχεται, αφού σε μία βάση δεδομένων που δημιουργώ τώρα έχω ενσωματώσει πάρα πολλές λειτουργίες και διάφορα "κολπάκια" που ανακάλυψα εδώ.

Για να μην πολυλογώ και σας κουράζω, θα αναφερθώ άμεσως στο πρόβλημα που με απασχολεί, συγκεκριμένα τα προβλήματα είναι δύο:

1ο: Πως να γράψω την εντολή έτσι ώστε όταν ανοίγει μία έκθεση για προεπισκόπηση να εφαρμόζονται τα φίλτρα ταξινόμησης.

2ο: Πως να καταχωρίσω αυτόματα τα στοιχεία ενός πίνακα σε εγγραφές που θα γίνονται σε έναν άλλο πίνακα.

Σίγουρα έτσι όπως αναφέρομαι στα δύο προβλήματα δεν είμαι και πολύ κατατοπιστικος, γι΄ αυτό θα παρακαλούσα να φορτώσετε το συνημμένο παράδειγμα, στο οποίο πιστεύω με αρκετή σαφήνεια περιγράφω ακριβώς τι θέλω να επιτύχω.

Θα περιμένω με ανυπομονησία την βοήθειά σας.

Φιλικά Φώτης.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb δοκιμή.mdb (548,0 KB, 57 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη fkonstas : 11-11-10 στις 22:53.
Απάντηση με παράθεση
  #2  
Παλιά 11-11-10, 22:35
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Καλησπέρα...
Αγαπητέ Φώτη, καλώς μας ήλθες. Θερμά παρακαλώ να αλλάξεις τον τίτλο του ερωτήματός σου, διότι στο μέλλον κανείς άλλος δεν πρόκειται να βοηθηθεί -με αυτόν τον τίτλο- ψάχνοντας μέσα στο Forum για κάποιο θέμα που τον αφορά. Βάλε π.χ. Φιλτρα σε report...
Για το πρώτο ερώτημα έγραψα κάτι :
Κώδικας:
Private Sub Εντολή167_Click()
    Dim namereport$, filtro$, x As Integer
    x = 0

    namereport = combo1
    filtro = ""

    If Not IsNull(combo2) And Not IsNull(combo3) Then
        filtro = "ΠΕΡΙΟΧΗ ='" & combo2 & "' and ΕΠΑΓΓΕΛΜΑ='" & combo3 & "'"
        x = 2
    End If

    If Not IsNull(combo2) And x = 0 Then filtro = "ΠΕΡΙΟΧΗ ='" & combo2 & "'"
    If Not IsNull(combo3) And x = 0 Then filtro = "ΕΠΑΓΓΕΛΜΑ='" & combo3 & "'"


    DoCmd.OpenReport namereport, acViewPreview, , filtro

End Sub
Δεν είναι ότι καλύτερο, άλλά μάλλον μια ...αρχή. Άλλαξα όνομα στα comboBox.
Με εκτίμηση Νίκος Δ.

Υστερολόγιο : Δεν μπορώ να δώσω συνέχεια στον διάλογο απόψε...
Απάντηση με παράθεση
  #3  
Παλιά 11-11-10, 23:16
Όνομα: ΦΩΤΗΣ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-10-2010
Μηνύματα: 11
Προεπιλογή

Νίκο σε χαιρετώ και σου προσφέρω ένα μεγάλο ευχαριστώ για την άμεση απαντησή σου.

Για τον τίτλο έχεις απόλυτο δίκιο, δεν το σκέφτηκα ότι μπορεί κάποιος να το αναζητήση, δοκίμασα να αλλάξω τον τίτλο αλλά μάλλον δεν κατάφερα τίποτα, ίσως αν βοηθήσει κάποιος διαχειριστής.

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

DoCmd.OpenReport namereport, acViewPreview, , filtro

προσθέτοντας την μεταβλητή filtro στο τέλος της εντολής, αφού πρώτα βάλεις δύο κόμματα, η έκθεση που αναγράφεται στο comboΒox φορτώνεται με τα επιθυμητά στοιχεία. ΑΠΛΑ ΤΕΛΕΙΟ (με κεφαλαία γιατί αυτή τη στιγμή το φωνάζω και είναι 00:15).

Και πάλι ένα πολύ μεγάλο ευχαριστώ.

Φιλικά Φώτης.
Απάντηση με παράθεση
  #4  
Παλιά 12-11-10, 08:03
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Καλημέρα μας...
Αγαπητέ Φώτη δεν μπορώ να καταλάβω "τι είδους υποχρέωση" θες να καταχωρήσεις π.χ. στον ΔΙΚΗΓΟΡΟ ΓΕΩΡΓΙΟΥ ΓΕΩΡΓΙΟ που είναι απο τη ΘΕΣΣΑΛΟΝΙΚΗ και θες πίνακα κ.λ.π.
Βάλε στον πίνακα tblPelates ένα ακόμη πεδίο [ipoxreosi] και όταν θες σε μια φόρμα κάντο φανερό για να γράφεις ότι θες ή σε μια άλλη περίπτωση κρυφό !
Αν πάλι θές στο ίδιο πρόσωπο να καταχωρείς πολλές 'υποχρεώσεις' τότε βεβαίως θα πας σε χρήση επιπλέον πίνακα.
Όμως!
Πρέπει να καταλάβουμε τι θες να κάνεις δίνοντας παράδειγμα για το όνομα που προανέφερα.
Νίκος Δ.

Υστερολόγιο : Κάνε χρήση αγγλικών γραμμάτων για ονοματολογία πεδίων, φορμών, πινάκων,... VBA δεν μπορείς να κάνεις με ονόματα που παρουσιάζουν κενά όπως 'ΛΙΣΤΑ ΥΠΟΧΡΕΩΣΕΩΝ ΔΦ'.
Απάντηση με παράθεση
  #5  
Παλιά 12-11-10, 17:46
Όνομα: ΦΩΤΗΣ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-10-2010
Μηνύματα: 11
Προεπιλογή

Νίκο και πάλι να σ΄ ευχαριστήσω που ασχολήθηκες με το πρόβλημά μου.

Το παράδειγμα που έχω ανεβάσει σίγουρα σε προβλημάτισε γιατί είναι εντελώς ασύνδετα και χωρίς λογική εξάρτηση.
Η βάση στην οποία δουλεύω τώρα είναι κατά πολύ μεγαλύτερη και με πληθώρα πινάκων. Επειδή την προορίζω για στρατιωτική χρήση και έχω ήδη καταχωρίση κάποια στοιχεία μέσα (βέβαια τα στοιχεία αυτά είναι ανευ διαβαθμίσεως), αλλά για καλό και για κακό, δεν θέλω να την δημοσιεύσω κάπου.

Αυτό που θέλω να καταφέρω είναι το εξής:
Εχω τρεις πίνακες:
tblLista
tblPelates
tblYpoxreosis όπως στο παράδειγμα που έχω αναρτήσει.

Θέλω να δημιουργώ μία λίστα με πελάτες στους οποίους θα καταχωρούνται κάποιες υποχρεώσεις.

Όταν αρχίζει η καταχώριση στον πίνακα tblLista δίνεται ένας αριθμός στο πεδίο ΑΑΛΙΣΤΑΣ με αυτόματη αρίθμηση που είναι και το πρωτεύων κλειδί πχ 1,

στην συνέχεια ο πίνακας tblYpoxreosis αρχίζει να παίρνει πρωτεύοντα κλειδιά στο πεδίο ΑΑΥΠΟΧΡΕΩΣΗΣ σε κάθε καταχώριση πχ 1,2,3,4,5,6,7,8,9,10 για κάθε ένα πελάτη (στο παράδειγμα έχω βάλει 10 πελάτες),

ταυτόχρονα στο πεδίο ΑΑΛΙΣΤΑΣ του πίνακα tblYpoxreosis καταχωρείται για όλες τις εγγραφές ο αριθμός από τον πίνακα tblLista που στην προκειμένη περίπτωση είναι το 1,

και στο πεδίο ΑΑΠΕΛΑΤΩΝ του πίνακα tblYpoxreosis καταχωρείται το πρωτεύων κλειδί του κάθε πελάτη,

Εν κατακλείδι έχουμε τον πίνακα tblYpoxreosis συμπληρωμένο με τα πρωτεύοντα κλειδιά των πελατών και της Λίστας (που είναι το ίδιο για την συγκεκριμένη καταχώριση).

Να περιγράψω ένα παράδειγμα: Ας υποθέσουμε ότι τα εξής δεδομένα,
Δραστηριότητες --- πρόκειται για κάτι συγκεκριμένο και μοναδικό, (στο παράδειγμα, tblLista)
Προσωπικό --- είναι αυτό που θα συμμετάσχει, (στο παράδειγμα, tblPelates)
Αποτελέσματα δραστηριοτήτων --- είναι η βαθμολογία που επιτυγχάνεται ,(στο παράδειγμα, tblYpoxreosis)

και ζητάω όταν ξεκινάω την καταχώριση μιας δραστηριότητας να έχω την δυνατότητα με κάποια εντολή να καταχωρώ όλο το προσωπικό σε πρώτο χρόνο (και όχι ένα - ένα που κάνω τώρα), αργότερα δε όταν θα έχω και τα αποτελέσματα να τα καταχωρώ με κάποια φόρμα που θα μου δίνει την δυνατότητα μεταβολής των δεδομένων.

Μέχρι τώρα έχω βρει την μισή λύση, αφού με ένα ερώτημα προσάρτησης μπορώ και καταχωρώ όλο το προσωπικό εκτελέντας το, άλλα δεν μπορώ ταυτόχρονα να το κάνω να καταχωρεί και το πρωτεύων κλειδί από τον πίνακα tblLista.

Νίκο συγνώμη έαν σε κούρασα με τόσα που έγραψα,
δεν ξέρω κατά πόσο έγινα κατανοητός, εάν μπορείς να κάνεις κάτι καλώς, πάντως το μεγαλύτερο και ουσιαστικότερο πρόβλημα μου το έλυσες χθές (φαντάζεσαι να έπρεπε να γράψω κώδικα για καμιά τριάνταρια εκθέσεις που έχω στη βάση και κάθε φορά που θα άλλαζε κάτι που έχει σχέση με το όνομα ή με τα φίλτρα που έχω από 5 κατηγορίες),
άσε τώρα που μπορώ να αλλάξω τις ονομασίες των εκθέσεων και να ακολουθήσω την συμβουλή που έδωσες παραπάνω.

Και πάλι ευχαριστώ,

Φιλικά Φώτης.
Απάντηση με παράθεση
  #6  
Παλιά 13-11-10, 14:58
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Καλησπέρα σε όλους ...
Αγαπητέ Φώτη, είσαι ιδιαίτερα αναλυτικός στο τι θες να συμβεί με τα δεδομένα σου, σαν να πιστεύεις οτι είναι ο μόνος τρόπος για να πετύχεις ό,τι επιδιώκεις!
Δεν είμαι βέβαιος οτι λύθηκε το ζήτημα που έθεσες, αλλά τουλάχιστον θα υπάρξει συνέχεια...
Τα ξαναλέμε/Νίκος Δ.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip δοκιμή.zip (65,1 KB, 60 εμφανίσεις)
Απάντηση με παράθεση
  #7  
Παλιά 13-11-10, 16:42
Όνομα: ΦΩΤΗΣ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-10-2010
Μηνύματα: 11
Προεπιλογή

Νίκο να σ' ευχαριστήσω και πάλι που ασχολήθηκες με το πρόβλημά μου διεξοδικότερα.

Δεν γνωρίζω κατά πόσο είναι εφικτό να γίνει αυτό που ζητάω, αλλά ούτε είμαι και σίγουρος ότι η προσέγγιση που ακολουθώ είναι η ιδανικότερη για την λειτουργία της βάσης μου, απλά έχω την πεποίθηση ότι με την VB όλα μπορούν να συμβούν.

Εξέτασα την λύση που μου προτείνεις και διαπίστωσα ότι δεν με εξυπηρετεί διότι οι πελάτες και οι υποχρεώσεις αποτελούν στοιχεία ενός μεγαλύτερου τμήματος που λέγεται λίστα (στο παραδειγμά μας), οπότε όταν αναζητώ μία λίστα εμφανιζονται οι πελάτες με τις υποχρεώσεις τους, γι' αυτό και καταφέυγω στην επιλογή και ενός τρίτου πίνακα.

Και πάλι να σου υπενθυμίσω ότι το παρόν αποτελεί δευτερεύων πρόβλημα και η επίλυσή του θα έχει ως αποτέλεσμα να κερδίζω περίπου 15 λεπτά όταν θα καταχωρώ όλο το προσωπικό, οπότε δεν πιέζομαι ιδιαίτερα και θα επιθυμούσα να μην χαραμίσεις άλλο τον χρόνο σου για μένα αφού διαπιστώσα ότι με το ίδιο ενδιαφέρον βοηθάς και πολλά άλλα μέλη που αντιμετωπίζουν προβλήματα (αισθάνομαι ότι γίνομαι πολύ βάρος και δεν ξέρω εάν ποτέ θα μπορέσω να ανταποδώσω).

Εκεί όμως που είχα το πραγματικό πρόβλημα η λύση που πρότεινες μου έλυσε τα χέρια, φαντάσου ότι έχω μία φόρμα με περίπου σαράντα πεδία απο πέντε διαφορετικούς πίνακες, όπου εκεί φιλτράρονται τα δεδομένα (ανάλογα τι επιλογή έχω στο κάθε πεδίο) και εκτυπώνονται μέχρι τώρα σε δέκα διαφορετικές εκθέσεις (μέχρι να τελειώσω την βάση θα ξεπεράσουν τις είκοσι) και ότι εάν δεν είχα την λύση σου θα έπρεπε να να έχω εντολές για κάθε έκθεση ξεχωριστά.

Και πάλι σ' ευχαριστώ.

Φιλικά Φώτης.

ΥΓ: Εάν πάλι σου έρθει καμία ιδέα θα είμαι σε επιφυλακή (για να μιλήσουμε και λίγο στρατιωτικά).
Απάντηση με παράθεση
  #8  
Παλιά 13-11-10, 18:11
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Φώτη,
ο πίνακας tblLista περιέχει μια ημερομηνία και το ID. Αν γεμίσεις αυτόν τον πίνακα με 5-10 εγγραφές και σε δείξω αυτόν τον πίνακα, θα καταλάβεις που ανήκει κάθε εγγραφή ; Μάλλον όχι! Οπότε η σχεδίαση έχει πρόβλημα!!!
Για να κάνεις σύνδεση σωστή πρέπει να βάλεις και ένα πεδίο ακόμη (πχ idpelati) και έτσι θα λές : Η έγγραφή με ID 40 και ημερομηνία 1/2/2010 ανήκει στον πελάτη με Id στον πίνακα tblPelates, ίσο με αυτό που διαβάζω στο πεδίο idpelati του πίνακα tblLista.
με αυτό τον τρόπο είσαι σε θέση να συνδέσεις tblPelates & tblLista που υποψιάζομαι οτι έιναι σωστότερο.
Δες το και τα λέμε / Νίκος Δ.

Υστερολόγιο : Ανήκουμε στην ίδια "οικογένεια" μιας και ένα απο τα παιδιά μου είναι υποσμηναγός...
Απάντηση με παράθεση
  #9  
Παλιά 13-11-10, 23:09
Όνομα: ΦΩΤΗΣ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-10-2010
Μηνύματα: 11
Προεπιλογή

Νίκο σε χαιρετώ και πάλι,

έχεις δίκιο στο ότι ο πίνακας tblLista έχει δύο πεδία και καταχωρώντας πολλά δεδομένα δεν θα μπορείς να καταλάβεις τι γίνεται, αλλά στην πραγματική βάση που κάνω έχει επτά πεδία που διαδραματίζουν πρωτεύοντα ρόλο και απλά οι πελάτες και οι υποχρεώσεις αποτελούν τα δευτερεύοντα στοιχεία.

Βέβαια πάλι έχω τις αμφιβολίες μου σχετικά με το τρόπο σχεδίασης της βάσης αλλά και των σχέσεων των πινάκων, αλλά από την άλλη η βάση μου δουλεύει τέλεια σε ότι αφορά την καταχώριση, την μεταβολή, την αναζήτηση και την εκτύπωση των στοιχείων.

Σε διαβεβαιώνω δε ότι στο ότι έχω δημιουργήσει μέχρι τώρα (σωστό ή λάθος) δεν ευθύνομαι εγώ, αλλά αυτά τα τεράστια μυαλά της μαμάς εταιρίας που δημιούργησε ένα τέτοιο πρόγραμμα που ο μοναδικός περιορισμός είναι η φαντασία μας.

Νάσαι πάντα καλά και να χαίρεσαι τα παιδιά σου και ιδιαίτερα το παλικάρι σου που προστατεύει τους αιθέρες μας, εμείς του "εδάφους" γνωρίζουμε καλά πόσο σημαντικοί είναι οι αεροπόροι μας και τι μπορούν να κάνουν από εκεί ψηλά.

Φιλικά Φώτης.
Απάντηση με παράθεση
  #10  
Παλιά 14-11-10, 22:08
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Φώτη Καλησπέρα...

Παρατηρώντας με τον Τάσο, το τμήμα της εφαρμογής που ανέβασες στο Forum, είδαμε ότι οι φόρμες ΛΙΣΤΑ ΥΠΟΧΡΕΩΣΕΩΝ και ΛΙΣΤΑ ΥΠΟΧΡΕΩΣΕΩΝ ΔΦ, δεν εμφάνιζαν τα δεδομένα που φορτώναμε, όταν μετά το κλείσιμο, τις ανοίγαμε πάλι !

Ίσως αυτό το γεγονός να αποτελεί αιτία του προβλήματος που θες να επιλύσεις. Πρότασή μας είναι να φέρεις τις φόρμες σε περιβάλλον σχεδίασης και να κάνεις τις πράξεις :
Παράθεση:
Φύλλο ιδιοτήτων >Δεδομένα > Καταχώρηση Δεδομένων: Όχι
και στις δυο φόρμες !

Φιλικά
Νίκος
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Δυναμικό μήνυμα επικύρωσης δεδομένων dalavouras Excel - Ερωτήσεις / Απαντήσεις 5 19-07-13 07:52
Φίλτρο σε έκθεση alex Access - Ερωτήσεις / Απαντήσεις 2 21-10-12 06:39
[ Εκθέσεις ] Φίλτρο σε Έκθεση ΤΖΙΜΗΣ Access - Ερωτήσεις / Απαντήσεις 5 24-07-11 14:55
Φίλτρο σε Έκθεση Χρήστος Access - Ερωτήσεις / Απαντήσεις 21 16-05-11 07:55
Φίλτρο σε Έκθεση Χρήστος Access - Ερωτήσεις / Απαντήσεις 16 12-03-11 13:31


Η ώρα είναι 15:39.